嘗試使用CSS 選擇器"span:contains('Control panel') 定位元素時”,遇到InvalidSelectorException,顯示錯誤:「給定的css 選擇器表達式「span:contains('Control panel')」無效」。
如問題 #987 和 #1547 所述,:contains偽類未包含在 CSS 規範中,且在 Firefox 和 Chrome 中均不支援。這個偽類是 Selenium 1.0 使用的 Sizzle 選擇器引擎所獨有的。但是,WebDriver 選擇不合併 Sizzle 的 CSS 選擇器,導致了這種不一致。
要有效解決此問題,請使用 的替代屬性。 tag:
element = "span[attribute_name=attribute_value]"
要使用提供的DOM 樹定位元素,請考慮以下XPath 選項:
使用使用
element = my_driver.find_element_by_xpath("//span[text()='Control panel']")使用
使用text()
:element = my_driver.find_element_by_xpath("//span[contains(.,'Control panel')]")
使用contains()
:element = my_driver.find_element_by_xpath("//span[normalize-space()='Control panel']")
$('span:contains("Control panel")')
:
jQuery 使用此外,您可以使用以下語法使用jQuery:此外,您可以使用以下語法使用jQuery: >值得注意的觀察根據@FlorentB 的見解,控制台不支援CSS 選擇器,但jQuery 提供支援。控制台中的「$(...)」語法代表「document.querySelector」的簡寫符號,它在包含在頁面中後會被 jQuery 覆蓋。以上是如何使用 \'span:contains(\'string\')\' 解決 InvalidSelectorException的詳細內容。更多資訊請關注PHP中文網其他相關文章!