Selenium Webdriver提供两种类型的等待-隐式和显式。 显式等待使WebDriver等待特定条件发生,然后再继续执行。 隐式等待使WebDriver在尝试查找元素时轮询DOM一定时间。
Explicit Waits
显式等待是您定义的代码,用于在继续执行代码之前先等待特定条件发生。 极端的情况是time.sleep(),它将条件设置为要等待的确切时间段。 提供了一些方便的方法,可以帮助您编写仅等待所需时间的代码。 WebDriverWait与ExpectedCondition结合是实现此目的的一种方法。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
在上面的代码中,Selenium将最多等待10秒,以便找到与给定条件匹配的元素。 如果在那时没有找到任何元素,则抛出TimeoutException。 默认情况下,WebDriverWait每500毫秒调用ExpectedCondition,直到返回成功。 如果成功,ExpectedCondition将返回true(布尔值),如果找不到元素,则返回null。
原文:https://blog.51cto.com/14930330/2531332