Selenium - 要素が存在し、表示され、操作可能になるまで待機する 質問する

Selenium - 要素が存在し、表示され、操作可能になるまで待機する 質問する

返信ボタンをクリックしてクラスを作成するSeleniumスクリプト(Python)があります匿名メール表示されます。クラス anonemail が表示されるまでにかかる時間は異なります。そのため、要素が表示されるまで sleep を使用する必要があります。

sleep を使用する代わりに、クラスが表示されるまで待機したいです。wait コマンドについては聞いたことがありますが、使い方がわかりません。

これまでのところ、次のとおりです。

browser.find_element_by_css_selector(".reply-button").click()
sleep(5)
email=browser.find_element_by_css_selector(".anonemail").get_attribute("value")

ベストアンサー1

ベストプラクティスに従って:

  • ユースケースが検証である場合面前あらゆる要素を誘導する必要がありますWebDriverWait設定する予想される条件としてpresence_of_element_located()これは、要素がページの DOM 上に存在するかどうかを確認するための期待値です。これは、必ずしも要素が表示されていることを意味するわけではありません。したがって、有効なコード行は次のようになります。

    WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".reply-button"))).click()
    
  • もしあなたのユースケースが任意の属性を抽出する誘発する必要がある要素のWebDriverWait設定する予想される条件としてvisibility_of_element_located(locator)これは、要素がページの DOM 上に存在し、表示されているかどうかを確認するための期待値です。可視性とは、要素が表示されるだけでなく、高さと幅が 0 より大きいことを意味します。したがって、使用例では、実際のコード行は次のようになります。

    email = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css"))).get_attribute("value")
    
  • ユースケースが呼び出しの場合click()誘発する必要がある要素WebDriverWait設定する予想される条件としてelement_to_be_clickable()これは、要素が表示されていてクリックできるようになっているかどうかを確認するための期待値です。したがって、ユースケースでは、実際のコード行は次のようになります。

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".reply-button"))).click()
    

参考文献

詳細な議論は以下でご覧いただけます。

おすすめ記事