selenium中,经常会出现元素还没有加载出来,浏览器找不到元素而报错的问题,设置等待是保证脚本运行的一个重要手段,常用的等待有三种–强制等待、隐式等待、显示等待。 本文主要介绍显示等待和EC模块结合使用
一、强制等待,也可以叫做固定等待,就是我们常用的sleep(),多用于调试、观察效果等,实际项目中不推荐使用
二、隐式等待driver.implicitly_wait(最大等待时间x秒)
参数是最大等待时间,只要在此规定时间内整个页面加载完成即可操作元素 设置一次,则全局(对应浏览器的整个生命周期内)生效,所以一般在打开浏览器后立即设置。
缺点:实际操作中你需要定位的元素已经加载完成,但其他元素未加载完成,也只能继续等待,相对(显示等待)来说会浪费时间。
三、显示等待WebDriverWait
隐式等待,它是针对某个(或某组)具体的元素,看它是否具备了一定的特征,就开始有所动作了。 显示等待也有最大等待时间,并提供了轮询间隔,等待条件成立。 默认轮询间隔是0.5秒,即每隔0.5秒程序就看一眼条件成立没。 语法如下所示:
1、直接用 WebDriverWait(driver,20,0.5).until(可执行方法,超时后返回的信息)
2、结合EC(expected_conditions)模块 WebDriverWait(driver,20,0.5).until(EC.方法)
原文链接:https://blog.csdn.net/weixin_45422695/article/details/123329201