「span:contains(\'string\')」で InvalidSelectorException を解決する方法

DDD
リリース: 2024-10-18 22:02:03
オリジナル
759 人が閲覧しました

How to Resolve InvalidSelectorException with

「span:contains('string')」による InvalidSelectorException

CSS セレクター「span:contains('コントロール パネル')」を使用して要素を検索しようとしたとき"、InvalidSelectorException が発生し、「指定された CSS セレクター式 "span:contains('コントロール パネル')" は無効です」というエラーが表示されます。

問題 #987 と #1547 で説明したように、:contains pseudo-class は CSS 仕様に含まれておらず、Firefox と Chrome の両方でサポートされていません。この疑似クラスは、Selenium 1.0 で使用される Sizzle Selector Engine に固有のものでした。ただし、WebDriver は Sizzle の CSS セレクターを組み込むことを選択しなかったため、この不一致が生じました。

この問題を効果的に解決するには、 の代替属性を使用します。タグ:

element = "span[attribute_name=attribute_value]"
ログイン後にコピー

代替ソリューション

提供された DOM ツリーを使用して要素を見つけるには、次の 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 の使用法

さらに、次の構文で jQuery を使用できます。

$('span:contains("Control panel")')
ログイン後にコピー
注目すべき観察

@FlorentB の洞察によると、CSS セレクターはコンソールではサポートされていませんが、jQuery はサポートを提供しています。コンソール内の「$(...)」構文は「document.querySelector」の短縮表記を表しており、ページに含めると jQuery によってオーバーライドされます。

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート