页面输入,点击按钮,以及跳转页面都需要一点时间响应,很可能会导致没有加载出来就进行下一步程序执行,会导致后面的程序找不到页面元素导致执行失败。
一.强制/固定等待(用于调试)
用法简单,一般用于项目调试,或者由于等待元素状态,文体发生改变,比如输入错误账号密码登录,弹出错误提示。缺点是运行效率低。
import time
time.sleep(2)
二.隐式等待/全局等待
设置一次后,全局有效,在元素没有出现时最多只等待指定时间,但如果在等待时间内,什么时候元素出现什么时候停止等待。
driver.implicitly_wait(30)
三.显示等待
可针对每一个元素进行单独设置,等待条件更加灵活
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support.wait import expected_conditions as EC # expected_conditions 中有很多方法
WebDriverWait(driver,5).util(EC.element_to_be_clickable(('id', 'btn3')))
driver.find_element('id', 'btn3').click()
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
参数:
- driver:浏览器驱动
- timeout:最长超时时间,默认以秒为单位
- poll_frequency:检测的间隔步长,默认为0.5s
- ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常。
方法:
- until
- until_not
参考:https://blog.csdn.net/sinat_41774836/article/details/88965281