ホームページ > バックエンド開発 > Python チュートリアル > Selenium の EC.presence_of_element_located() を複数のクラス名で使用する方法は?

Selenium の EC.presence_of_element_located() を複数のクラス名で使用する方法は?

DDD
リリース: 2024-12-06 08:05:12
オリジナル
676 人が閲覧しました

How to Use Selenium's EC.presence_of_element_located() with Multiple Class Names?

Selenium の EC.presence_of_element_located() を使用してクラスを指定する

動的 HTML ページを Web スクレイピングする場合、EC.presence_of_element_located で WebDriverWait を使用する() を使用すると待機できますデータを取得する前に表示される特定の要素。通常、要素は ID で指定します。ただし、特定のシナリオでは、代わりにクラスで要素を指定する必要がある場合があります。

元のコードは、EC.presence_of_element_located((By.class, "ng-binding ng- scope")):

element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
ログイン後にコピー

ただし、この構文は WebDriver の Locator に準拠していないため機能しません。構文規則。 By.class メソッドは、引数として複数のクラス名をサポートしません。

解決策:

この問題を解決するには、presents_of_element_located( ) 関数を By.CSS_SELECTOR または By.XPATH とともに使用して、ID 属性とクラス属性の両方を次のように指定します。

CSS_SELECTOR の使用:

element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
ログイン後にコピー

XPATH の使用:

element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
ログイン後にコピー

ID とクラスの組み合わせ属性を使用すると、クラスのみが存在する場合でも、目的の要素を正確に見つけることができます。指定されています。

以上がSelenium の EC.presence_of_element_located() を複数のクラス名で使用する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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