Selenium.common.Exceptions.InvalidSelectorException with "span:contains('string')"
Firefox で Selenium Python を使用して試行した場合CSS セレクター「span:contains('コントロール パネル')」を使用して要素を検索すると、次のエラーが発生します:
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 仕様によると、「:contains」疑似クラスは Firefox または Chrome ではサポートされていません。 WebDriver の外でも。これは、Selenium 1.0 で使用されていた Sizzle Selector Engine に固有のものでした。ただし、WebDriver は Sizzle スタイルの CSS セレクターをサポートしていません。
解決策
「:contains」の代わりに、属性または XPath セレクターを使用します:
属性:
element = "span[attribute_name=attribute_value]"
XPath:
使用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']")
代替ソリューション
jQuery を使用する:
$('span:contains("Control panel")')
トリビア
以上がSelenium Python Firefox で「span:contains(\'string\')」を使用して InvalidSelectorException を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。