WebDriverWait と expected_conditions の使い方

上記2つは、Selenium WebdriverPython バインディングで使用される重要なツールです。

これらは、Webアプリケーションをテストする際に必要となる、待機と条件付きの処理を行うために使用されます。

以下にWebDriverWaitexpected_conditionsの使い方を説明します。

WebDriverWaitの使い方

WebDriverWaitは、指定された条件が満たされるまで指定時間待機します。

WebDriverWaitの使い方は、以下のようになります。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver import Chrome

driver = Chrome()

# ウェブページを読み込む
driver.get("https://www.example.com/")

# WebDriverWaitオブジェクトを生成し、待機時間を10秒に設定
wait = WebDriverWait(driver, 10)

# 指定条件が満たされるまで待機
element = wait.until(EC.presence_of_element_located((By.ID, "example")))

# 要素が表示されるまで待機した後、何かしらの処理を行う
element.click()

# ドライバーを閉じる
driver.quit()

上記の例では、WebDriverWaitオブジェクトで、待機時間を10秒に設定します。

次に、presence_of_element_located()で、指定条件が満たされるまで待機します。

expected_conditionsの使い方

expected_conditionsは、WebDriverWaitと一緒に使用するために設計された条件クラスのライブラリです。

Selenium WebDriverでの条件のチェックに使用されます。

このライブラリを使用することで、テストコード内でより効率的に条件を確認することができます。

以下に、expected_conditionsの使い方を説明します。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver import Chrome

driver = Chrome()
driver.get("https://www.example.com/")
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "example")))
element.click()

# expected_conditions:要素がクリック可能であることを確認
wait.until(EC.element_to_be_clickable((By.ID, "example_button"))).click()

driver.quit()

上記の例では、element_to_be_clickable()を使用して、要素がクリック可能であることを確認し、その後、click()を使用して要素をクリックしています。

example_buttonは実際のWebページの要素のIDを指定する必要があります。

expected_conditions:指定条件の種類

expected_conditionsには多数の待機するための条件があります。

以下に、一般的なexpected_conditionsの一部を列挙します。

  • presence_of_element_located
    • 指定された要素がDOM内に存在?
  • visibility_of_element_located
    • 指定された要素が表示されている?
  • text_to_be_present_in_element
    • 指定された要素内に指定されたテキストが表示されている?
  • element_to_be_clickable
    • 指定された要素がクリック可能?
  • title_contains
    • ページのタイトルに指定されたテキストが含まれている?
  • url_contains
    • ページのURLに指定されたテキストが含まれている?

これらは、Selenium WebDriverでのテスト自動化の中で最も頻繁に使用されるexpected_conditionsの一部です。

他にも、より詳細な条件が存在しますので、公式ドキュメントを参照してください。

タイトルとURLをコピーしました