ホームページ  >  記事  >  バックエンド開発  >  :contains() を使用した CSS セレクターが Firefox の Selenium Python で「InvalidSelectorException」を引き起こすのはなぜですか?

:contains() を使用した CSS セレクターが Firefox の Selenium Python で「InvalidSelectorException」を引き起こすのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-18 21:57:03139ブラウズ

Why Does CSS Selector with :contains() Cause

Selenium Python の無効な CSS セレクター: "selenium.common.Exceptions.InvalidSelectorException with "span:contains('string')""

Firefox で Selenium Python を使用している場合、「span:contains('コントロール パネル')」などの:contains() 疑似クラスを使用して CSS セレクターによって要素を検索しようとすると、「InvalidSelectorException」が発生する可能性があります。

理由:

:contains() 疑似クラスは、Firefox または Chrome ではサポートされていません。 Issue #987 と #1547 で述べたように、WebDriver は、:contains().

代替ソリューション:

代わりに、span タグの他の属性 (

element = "span[attribute_name=attribute_value]"
など) を使用することを検討してください。または、DOM ツリー構造に基づいて XPath を使用します。

  • テキストの使用():

    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']")
または、:contains():

$('span:contains("Control panel")')

注: :contains() を使用した CSS セレクターに jQuery を利用することもできます。これもコンソールではサポートされていませんが、jQuery は document.querySelector を独自の実装で上書きし、使用を許可します。

以上が:contains() を使用した CSS セレクターが Firefox の Selenium Python で「InvalidSelectorException」を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。