在自动化过程中,元素出现受网络环境、设备性能等多种因素影响。因此元素加载的时间可能不一致,从而会导致元素无法定位超时报错,那么遇到这样的问题我们如何解决呢????

元素等待的作用

设置元素等待可以灵活的制定等待定位元素的时间,从而增强脚本的健壮性,提高执行效率

元素等待的类型

强制等待

设置固定的等待时间,使用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"))