Selenium Python 中无效的 CSS 选择器:“selenium.common.exceptions.InvalidSelectorException 带有“span:contains('string')””
在 Firefox 中使用 Selenium Python 时,尝试使用 :contains() 伪类通过 CSS 选择器查找元素,例如“span:contains('Control panel')”,可能会导致“InvalidSelectorException”。
原因:
Firefox 或 Chrome 不支持 :contains() 伪类。如问题 #987 和 #1547 中所述,WebDriver 选择不支持 Sizzle 风格的 CSS 选择器,其中包括 :contains()。
替代解决方案:
相反,请考虑使用 span 标签的任何其他属性,例如:
element = "span[attribute_name=attribute_value]"
或者,使用基于 DOM 树结构的 XPath:
使用文本():
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 来使用 :contains() 进行 CSS 选择器:
$('span:contains("Control panel")')
注意: 带有 :contains() 的 CSS 选择器是控制台也不支持,但 jQuery 用自己的实现覆盖 document.querySelector,允许使用它们。
以上是为什么使用 :contains() 的 CSS 选择器在使用 Firefox 的 Selenium Python 中会导致'InvalidSelectorException”?的详细内容。更多信息请关注PHP中文网其他相关文章!