錯誤: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」偽類,因此您可以使用它來定位元素:
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']")
解決方案3:使用jQuery
或者,您可以使用jQuery 來定位具有「包含」功能的元素:$('span:contains("Control panel")')
以上是如何在 Selenium Python Firefox 中使用「span:contains(\'string\')\」處理「Selenium.common.exceptions.InvalidSelectorException\」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!