使用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表達式之一樹:
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']")
jQuery 還支持:contains 偽類,允許您使用以下表達式:
$('span:contains("Control panel")')
請記住,瀏覽器控制臺本身不支援CSS 選擇器,但jQuery 透過$('...') 支援它們快捷方式,通常會覆寫預設的 document.querySelector 方法。
以上是為什麼「span:contains('string')」在 Firefox 中的 Selenium 中失敗,如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!