上記2つは、Selenium Webdriver の Python バインディングで使用される重要なツールです。
これらは、Webアプリケーションをテストする際に必要となる、待機と条件付きの処理を行うために使用されます。
以下にWebDriverWaitとexpected_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の一部です。
他にも、より詳細な条件が存在しますので、公式ドキュメントを参照してください。