首頁  >  文章  >  後端開發  >  如何使用 \'span:contains(\'string\')\' 解決 InvalidSelectorException

如何使用 \'span:contains(\'string\')\' 解決 InvalidSelectorException

DDD
DDD原創
2024-10-18 22:02:03761瀏覽

How to Resolve InvalidSelectorException with

InvalidSelectorException with "span:contains('string')"

嘗試使用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 選項:

  • 使用使用

    element = my_driver.find_element_by_xpath("//span[text()='Control panel']")
    使用
  • 使用
  • 使用text()

    :
    element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
  • 使用contains()

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

$('span:contains("Control panel")')

使用

normalize-space()

:

jQuery 使用此外,您可以使用以下語法使用jQuery:此外,您可以使用以下語法使用jQuery: >值得注意的觀察根據@FlorentB 的見解,控制台不支援CSS 選擇器,但jQuery 提供支援。控制台中的「$(...)」語法代表「document.querySelector」的簡寫符號,它在包含在頁面中後會被 jQuery 覆蓋。

以上是如何使用 \'span:contains(\'string\')\' 解決 InvalidSelectorException的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn