如何在 Selenium Python Firefox 中使用'span:contains(\'string\')\”处理'Selenium.common.exceptions.InvalidSelectorException\”?

DDD
发布: 2024-10-18 22:00:04
原创
917 人浏览过

How to Handle

错误:Selenium Python Firefox 中的“Selenium.common.exceptions.InvalidSelectorException”和“span:contains('string')”

当尝试使用具有“contains”功能的 CSS 选择器(例如“span:contains('Control panel')”)来定位元素时,您可能会遇到以下错误:

selenium.common.exceptions.InvalidSelectorException: Message: Given css selector expression "span:contains('Control panel')" is invalid: InvalidSelectorError: 'span:contains('Control panel')' is not a valid selector: "span:contains('Control panel')"
登录后复制

说明:

出现此错误是因为 Firefox 或 Chrome 的本机 CSS 选择器不支持“:contains”伪类。它之前被用在 Selenium 1.0 所依赖的 Sizzle Selector Engine 中,但由于浏览器之间的不一致而在 WebDriver 中被删除。

解决方案 1:使用其他 CSS 属性

不要使用“:contains”伪类,而是使用不同的 CSS 属性(例如 class、id 或其他标识属性)搜索元素。例如:

element = "span[attribute_name=attribute_value]"
登录后复制

解决方案 2:使用 XPath

XPath 支持“:contains”伪类,因此您可以使用它来定位元素:

  • 使用“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']")
登录后复制

解决方案 3:使用 jQuery

或者,您可以使用 jQuery 来定位具有“包含”功能的元素:

$('span:contains("Control panel")')
登录后复制

以上是如何在 Selenium Python Firefox 中使用'span:contains(\'string\')\”处理'Selenium.common.exceptions.InvalidSelectorException\”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板