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

DDD
發布: 2024-10-18 22:00:04
原創
916 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板