我有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')])]