尝试使用 CSS 选择器 "span:contains('Control panel') 定位元素时”,遇到 InvalidSelectorException,显示错误:“给定的 css 选择器表达式“span:contains('Control panel')”无效”。
如问题 #987 和 #1547 中所述,:contains伪类未包含在 CSS 规范中,并且在 Firefox 和 Chrome 中均不支持。这个伪类是 Selenium 1.0 使用的 Sizzle 选择器引擎所独有的。但是,WebDriver 选择不合并 Sizzle 的 CSS 选择器,从而导致了这种不一致。
要有效解决此问题,请使用 的替代属性。 tag:
element = "span[attribute_name=attribute_value]"
要使用提供的 DOM 树定位元素,请考虑以下 XPath 选项:
使用 text():
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
使用 contains():
element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
使用normalize-space():
element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
此外,您可以使用以下语法使用 jQuery:
$('span:contains("Control panel")')
根据 @FlorentB 的见解,控制台不支持 CSS 选择器,但 jQuery 提供支持。控制台中的“$(...)”语法代表“document.querySelector”的简写符号,它在包含在页面中后会被 jQuery 覆盖。
以上是如何使用 \'span:contains(\'string\')\' 解决 InvalidSelectorException的详细内容。更多信息请关注PHP中文网其他相关文章!