标签:帮助 mice until 不同 imp expec locate some except
如今,大多数Web应用程序都在使用AJAX技术。 当浏览器加载页面时,该页面中的元素可能会以不同的时间间隔加载。 这使定位元素变得困难:如果DOM中尚不存在元素,则定位函数将引发ElementNotVisibleException异常。 使用等待,我们可以解决此问题。 等待在执行的动作之间提供了一定的松弛时间-主要是定位元素或对该元素进行的任何其他操作。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。
标签:帮助 mice until 不同 imp expec locate some except
原文地址:https://blog.51cto.com/14930330/2531332