Selenium.common.exceptions.InvalidSelectorException with "span:contains('string')"
在Firefox 中嘗試使用Selenformium時使用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')"
在Selenium IDE 中,此方法成功定位元素。然而,在 Python 中,它失敗了。
根本原因
根據 CSS 規範,Firefox 或 Chrome 不支援「:contains」偽類,即使在 WebDriver 之外。它特定於 Selenium 1.0 中使用的 Sizzle 選擇器引擎。但是,WebDriver 不支援 Sizzle 風格的 CSS 選擇器。
解決方案
使用屬性或XPath 選擇器來取代「:contains」:
屬性:
element = "span[attribute_name=attribute_value]"
XPath:
使用text():
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']")
$('span:contains("Control panel")')
替代解決方案
以上是如何在 Selenium Python Firefox 中使用「span:contains(\'string\')\」處理 InvalidSelectorException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!