在自动化过程中,元素出现受网络环境、设备性能等多种因素影响。因此元素加载的时间可能不一致,从而会导致元素无法定位超时报错,那么遇到这样的问题我们如何解决呢????
元素等待的作用
设置元素等待可以灵活的制定等待定位元素的时间,从而增强脚本的健壮性,提高执行效率
元素等待的类型
强制等待
设置固定的等待时间,使用sleep()方法
import time #强制等待5秒 time.sleep(5)
隐式等待
隐式等待是针对全部元素的等待时间
driver.implicitly_wait(10)
显示等待
针对某个元素设置的等待时间
from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver,timeout,poll_frequency-0.5,ignored_exceptions-None)
driver:WebDrIverson
timeout:最长超时时间
poll_frequency:休眠时间的时间间隔
ignored_exceptions:超时后的异常信息,默认情况下抛:NoSuchElementException异常
WebDriverWait()一般和until()和until_not()方法配合使用,lambda提高了一个运行时动态创建函数的方法
1 from selenium.webdriver.support.ui import WebDriverWait 2 3 WebDriverWait(driver,10).until(lambda x:x.find_element_by_id("elementID"))
原文:https://www.cnblogs.com/t-rex/p/10516611.html