XPath 中的 CSS 选择器

Posted

技术标签:

【中文标题】XPath 中的 CSS 选择器【英文标题】:CSS selector inside XPath 【发布时间】:2012-02-18 18:46:15 【问题描述】:

是否可以在 XPath 中指定 CSS 选择器?本质上,我想找到同时满足.myClass divdiv[contains(., 'Hello!')] 的元素。

【问题讨论】:

【参考方案1】:

不,您不能将 CSS 选择器语法和 XPath 语法组合成一个表达式。两种语言都没有任何功能可以让您从另一种语言中获取表达式。

您只能将 CSS 选择器合并到 XPath as XPath 中,这意味着您需要自己翻译它。在您的情况下,这是生成的 XPath 表达式:

//*[contains(concat('', @class, ''), 'myClass')]//div[contains(., 'Hello!')]

当然,这取决于您可以使用 CSS 选择器或 XPath 完成什么。例如,if the :contains() pseudo-class hadn't been dropped from CSS3,您也可以使用这个 CSS 选择器:

.myClass div:contains('Hello!')

但它已从规范中删除,因此您只能将其用作 jQuery 选择器或 Selenium CSS 定位器。

【讨论】:

contains(@class, 'myClass') 也匹配 AmyClassman。最好使用contains(concat(' ', @class, ' '), ' myClass ')之类的东西 @lwburk:我希望有一个解决方案。谢谢!我已经更新了我的答案。

以上是关于XPath 中的 CSS 选择器的主要内容,如果未能解决你的问题,请参考以下文章