【发布时间】:2012-02-18 18:46:15
【问题描述】:
是否可以在 XPath 中指定 CSS 选择器?本质上,我想找到同时满足.myClass div 和div[contains(., 'Hello!')] 的元素。
【问题讨论】:
标签: css xpath css-selectors
是否可以在 XPath 中指定 CSS 选择器?本质上,我想找到同时满足.myClass div 和div[contains(., 'Hello!')] 的元素。
【问题讨论】:
标签: css xpath css-selectors
不,您不能将 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 ')之类的东西