XPath 表示没有特定类的后代的所有元素



我有CSS选择器,并试图将其应用于硒。css 选择器.parentclass:not(:has(.childclass)) 。我正在尝试获取所有没有带有类 childclass 的后代元素的父元素。它在jQuery中完美运行。但在硒中它似乎不起作用。

所以我决定尝试XPath。XPath 中与上述 CSS 选择器的等效项是什么?我能够获得以下工作: //*[contains(@class, 'parentclass')] .但这只是条件的第一部分。我怎么能在 XPath 中说我只需要不包含 CSS 类子类子类的父项?

这个XPath,

//*[contains(@class, 'parentclass') and not(*[contains(@class, 'childclass')])]

将选择其@class属性包含"parentclass"且其子元素没有包含"childclass"@class属性的所有元素。

如有必要,应用空格填充技巧以避免错误的子字符串匹配。


每个 OP 注释的更新:

上述 XPath 可以很容易地进行调整,以排除那些后(而不是子项(满足所述条件的元素:

//*[contains(@class, 'parentclass') and not(.//*[contains(@class, 'childclass')])]

最新更新