设置元素等待
大多数Web应用程序都是使用Ajax和Javascript开发的。当浏览器加载页面时,我们想要与之交互的元素可能尚未被加载出来。此刻不仅难以识别元素,而且很容易定位不到元素,抛出异常。使用Waits,我们可以解决此问题
WebDriver提供了两种类型的等待:显式等待和隐式等待
显式等待使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)
from selenium import webdriver 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://www.baidu.com") # 每隔 0.5s 检查一次(默认就是 0.5s), 最多等待 5 秒 element = WebDriverWait(driver, 5, 0.5).until( EC.visibility_of_element_located( (By.ID, "kw") ) ) element.send_keys('selenium') driver.quit()
隐式等待:
WebDriver提供了
driver.implicitly_wait(10)
方法来实现隐式等待,默认参数的单位为秒,本例中设置等待时长为10秒。当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到.
假设在第6秒定位到了元素则继续执行,若直到超出设置时长(10秒)还没有定位到元素,则抛出异常

浙公网安备 33010602011771号