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 选择器的主要内容,如果未能解决你的问题,请参考以下文章

使用 xpath 或 css 选择器解析混合移动应用程序中的所有元素

包含类、子选择器和相邻兄弟选择器的 CSS 选择器的等效 XPath 是啥?

CSS / XPATH 选择器查询

使用 CSS 或 XPath 选择器解析 HTML?

XPath 中 CSS 多重选择器的等价物

css 或 xpath 选择器:具有特定值的任何属性的元素