ホームページ  >  記事  >  バックエンド開発  >  Python で複数の要素が Selenium に読み込まれるのを効果的に待つ方法は?

Python で複数の要素が Selenium に読み込まれるのを効果的に待つ方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-28 23:52:30540ブラウズ

How to Effectively Wait for Multiple Elements to Load in Selenium with Python?

Python: 複数の要素のロードを待機しています

AJAX でロードされたリストは、Selenium での可視性の検証に課題を引き起こす可能性があります。複数の要素を含むリストが完全に読み込まれたかどうかを確実に確認するには、次の方法を検討してください:

WebDriverWait による明示的な待機

WebDriverWait を使用すると、visibility_of_all_elements_located() 条件を誘導できます:

<code class="python">elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "ul.ltr li[id^='t_b_'] > a[id^='t_a_'][href]")))</code>

代わりに、XPath を使用することもできます。

<code class="python">elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_') and starts-with(., 'Category')]")))</code>

特定の数の要素を待機

特定の数の要素 (10 など) を待機するには、ラムダ関数を使用します。 :

<code class="python">myLength = 9
WebDriverWait(driver, 20).until(lambda driver: len(driver.find_elements_by_xpath("//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_') and starts-with(., 'Category')]")) > int(myLength))</code>
<code class="python">myLength = 10
WebDriverWait(driver, 20).until(lambda driver: len(driver.find_elements_by_xpath("//ul[@class='ltr']//li[starts-with(@id, 't_b_')]/a[starts-with(@id, 't_a_') and starts-with(., 'Category')]")) == int(myLength))</code>

追加メモ

  • 必要な Selenium パッケージを忘れずにインポートしてください。
  • 使用されるロケーターが一意で、目的のパッケージに固有であることを確認してください。
  • さらなる洞察を得るために、提供されているディスカッションと参考資料を検討してください。

以上がPython で複数の要素が Selenium に読み込まれるのを効果的に待つ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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