py-py’s blog

何か書くよ

WebDriverWait(driver, timeout)って条件満たすまで待機してるの?

こんな感じのコードがあるとする

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

url = "対象サイト"
driver = webdriver.PhantomJS()
driver.get(url)

# ページャー機能をクリックしたい
nextlink = driver.find_elements_by_xpath(xpath)
if nextlink:
    nextlink[0].click()
    sleep(3)
    # 要素が出現するまで待機
    WebDriver(driver, 10).until(expected_conditions.presence_of_element_located((By.ID, "")))

sleep()があるときはある程度安定して取得してくれるが
取ったとたん、「"errorMessage":"Element is no longer attached to the DOM"」で怒られちゃうんだけどなぁ。

結局sleep(1)でもはさまないと取得してくれない。。

【2/19修正】 コード修正