ホームページ  >  記事  >  バックエンド開発  >  Selenium で「span:contains(\'String\')」\ による InvalidSelectorException を解決する方法

Selenium で「span:contains(\'String\')」\ による InvalidSelectorException を解決する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-18 21:58:30596ブラウズ

How to Resolve InvalidSelectorException with

「span:contains('String')」を含む Selenium での無効な SelectorException

Firefox で Python の Selenium を使用する場合、 CSS セレクター「span:contains('コントロール パネル')」を使用して要素を検索しようとすると、次のエラーが発生する場合があります:

selenium.common.exceptions.InvalidSelectorException: Given css selector expression "span:contains('Control panel')" is invalid: InvalidSelectorError: 'span:contains('Control panel')' is not a valid selector: "span:contains('Control panel')"

このエラーは、指定された CSS セレクターが無効であることを示します。 Issue#987 および Issue#1547 によると、「:contains」疑似クラスは Firefox または Chrome ではサポートされていません。

解決策:

「:contains」擬似クラスは標準の CSS セレクターではないため、代替の属性セレクターに置き換える必要があります。例:

<code class="python">element = "span[attribute_name=attribute_value]"</code>

代替 XPath:

属性セレクターが使用できない場合は、次の 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 代替:

<code class="javascript">$('span:contains("Control panel")')</code>

注:

CSS セレクターは、ブラウザ コンソールですが、JQuery は document.querySelector のショートカットを提供します。そのため、ページで CSS セレクターが有効になっている場合、JQuery は CSS セレクターをサポートする可能性があります。

以上がSelenium で「span:contains(\'String\')」\ による InvalidSelectorException を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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