seleniumを使ってスクレイピングをするとき、ページが読み込まれるまで処理を待機させることがある。
そのとき、ページによって表示される内容が異なっているときなどは、複数の条件を使って制御する。
複数の条件が同時に満たされるときまで待ってほしいとき
方法
all_ofを使う
具体例
wait_until_all.py
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(・・・)
wait.until(
EC.all_of(
EC.text_to_be_present_in_element((By.CLASS_NAME, "hoge"), "これが表示されるまで待つ"),
EC.text_to_be_present_in_element((By.CLASS_NAME, "fuga"), "これも表示されるまで待つ")
)
)
複数の条件が同時に満たされるときまで待ってほしい
方法
any_ofを使う
具体例
wait_until_any.py
wait.until(
EC.any_of(
EC.text_to_be_present_in_element((By.CLASS_NAME, "hoge"), "これが表示されるまで待つ"),
EC.text_to_be_present_in_element((By.CLASS_NAME, "fuga"), "これが表示されてもいい")
)
)
参考