首頁 > web前端 > css教學 > 為什麼「span:contains('string')」在 Firefox 中的 Selenium 中失敗,如何修復?

為什麼「span:contains('string')」在 Firefox 中的 Selenium 中失敗,如何修復?

DDD
發布: 2024-12-29 04:29:10
原創
694 人瀏覽過

Why Does

使用Firefox 的Selenium 中的「span:contains('string')」時出現無效的SelectorException

嘗試透過CSS 定位元素時在帶有Firefox 的Selenium Python 選擇器中,「span:contains('Control panel')」表達式可能會遇到InvalidSelectorException 並顯示訊息「給定CSS 選擇器表達式'span:contains('Control panel')' 無效。中所述,不支援:contains 偽類在CSS 規範中,因此Firefox 無法辨識。這個偽類是 Selenium 1.0 中使用的 Sizzle 選擇器引擎的一部分,但 WebDriver 不支援 Sizzle 風格的 CSS 選擇器。

對於本身不支援 CSS 選擇器的瀏覽器(例如​​ IE7 和 IE8), :contains 可能仍然有效,導致不同瀏覽器之間的不一致。更可靠的方法是使用span 標籤的另一個屬性,例如:

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')]")
    登入後複製
  • 使用標準化空間():

    element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
    登入後複製
使用jQuery:

jQuery 還支持:contains 偽類,允許您使用以下表達式:

$('span:contains("Control panel")')
登入後複製
附加說明:

請記住,瀏覽器控制臺本身不支援CSS 選擇器,但jQuery 透過$('...') 支援它們快捷方式,通常會覆寫預設的 document.querySelector 方法。

以上是為什麼「span:contains('string')」在 Firefox 中的 Selenium 中失敗,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板