我有CSS选择器,并试图在selenium中应用它。
Css选择器是.parentclass:not(:has(.childclass))
。我试图获得所有没有类childclass
的后代元素的父元素。它在jQuery中非常完美。但是在硒中它似乎不起作用。
所以我决定尝试XPath。 XPath与前面提到的CSS选择器的等价物是什么?我能够得到以下工作:
//*[contains(@class, 'parentclass')]
。但这只是条件的第一部分。我怎么能在XPath中说我只需要那些不包含CSS类子类的孩子的父母?
答案 0 :(得分:4)
这个XPath,
//*[contains(@class, 'parentclass') and not(*[contains(@class, 'childclass')])]
将选择@class
属性包含"parentclass"
且其子级没有包含@class
的{{1}}属性的所有元素。
如果需要,应用space-padding trick以避免错误的子字符串匹配。
根据OP评论更新:
上述XPath可以很容易地进行调整,以排除那些 后代 而不是 children 符合规定条件的元素:
"childclass"