首页  >  文章  >  后端开发  >  如何在 Selenium 中使用 \"span:contains(\'String\')\" 解决 InvalidSelectorException?

如何在 Selenium 中使用 \"span:contains(\'String\')\" 解决 InvalidSelectorException?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-18 21:58:30512浏览

How to Resolve InvalidSelectorException with

Selenium 中带有“span:contains('String')”的 Invalid SelectorException

在 Firefox 中使用 Python 中的 Selenium 时,尝试使用 CSS 选择器“span:contains('Control panel')”查找元素可能会导致以下错误:

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

此错误表示提供的 CSS 选择器无效。根据 Issue#987 和 Issue#1547,Firefox 或 Chrome 不支持“:contains”伪类。

解决方案:

“:contains”伪类不是标准 CSS 选择器,应替换为替代属性选择器。例如:

<code class="python">element = "span[attribute_name=attribute_value]"</code>

备用 XPath:

如果属性选择器不可用,您可以使用以下 XPath 之一:

element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")

jQuery 替代方案:

<code class="javascript">$('span:contains("Control panel")')</code>

注意:

CSS 选择器不受支持浏览器控制台,但 JQuery 提供了 document.querySelector 的快捷方式。因此,如果页面上启用了 CSS 选择器,JQuery 可能会支持 CSS 选择器。

以上是如何在 Selenium 中使用 \"span:contains(\'String\')\" 解决 InvalidSelectorException?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn