针对寻找页面元素时,页面还没有加载完成的情况,可以通过添加等待时间,确保脚本稳定性。
影响请求的因素:网络速度;电脑配置;服务器处理请求的速度
【强制等待】
比如,time.sleep(3),就代表等待3秒
适用场景:脚本调试;倒计时页面
缺点:脚本运行的性能低
【隐式等待】
设定时间内,检查所有页面元素是否加载完成,如果超过设定的时间还没有加载完成不到抛出异常。
比如,driver.implicitly_wait(5),如果页面元素在5秒内都加载完成,也可以继续往下执行。
print(time.time())
driver.implicitly_wait(5)
print(time.time())
通过implicitly_wait上下两个打印时间戳的代码,可以得到页面实际的加载时间,使用try/except捕获异常。
try:
driver.find_elements_by_id("app")
except Exception as msg:
print(msg)
适用场景:验证页面上加载所有元素需要的时间
【显示等待】
设定时间内,每隔一段时间检查某个元素是否存在,如果超过设定的时间检测不到抛出异常。
WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("app"))
driver--浏览器
10--最长等待时间
1--间隔时间
until--方法
p.s.
【导入time】
time底部有红色波浪线,鼠标定位到time,点击上方显示的红色灯泡,点击
导入time工具包,即可使用time
【导入WebDriverWait】