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

时间:2017-03-26 13:29:00

标签: html xml selenium xpath selenium-webdriver

我有CSS选择器,并试图在selenium中应用它。 Css选择器是.parentclass:not(:has(.childclass))。我试图获得所有没有类childclass的后代元素的父元素。它在jQuery中非常完美。但是在硒中它似乎不起作用。

所以我决定尝试XPath。 XPath与前面提到的CSS选择器的等价物是什么?我能够得到以下工作: //*[contains(@class, 'parentclass')]。但这只是条件的第一部分。我怎么能在XPath中说我只需要那些不包含CSS类子类的孩子的父母?

1 个答案:

答案 0 :(得分:4)

这个XPath,

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

将选择@class属性包含"parentclass"且其子级没有包含@class的{​​{1}}属性的所有元素。

如果需要,应用space-padding trick以避免错误的子字符串匹配。

根据OP评论更新:

上述XPath可以很容易地进行调整,以排除那些 后代 而不是 children 符合规定条件的元素:

"childclass"