首先我们先聊一下问什么要添加延时等待,大家都知道,selenium自动化测试是基于UI页面的自动化测试,所有定位操作的元素必须要等前端页面加载完成才可以定位成功,当页面需要渲染的内容更多,或网络网速慢的时候,等待时间或许更长,否则就会抛异常(“ ElementNotVisibleException ”),所以,添加延时等待的目的是为了让脚本运行的更稳定。
在selenium中常用的延时等待主要有三种方法。
强制等待:time模块下的sleep()方法
特点是只能够针对当前操作。所以这种单步骤操作,无法很好的控制脚本的执行,并且,如果每步需要添加机会出现过多的重复代码。且休眠时间超过5秒的话,可能出现浏览器回话连接断开的情况。
隐式等待:implicitly_wait()方法,属于webdriver驱动器对象下的方法,针对一次回话所有的操作,相当于一个全局的等待,只需要声明一次。(通常在设计脚本的时候会应用于setup方法)
显式等待:WebdriverWait(驱动对象(浏览器句柄),等待时间)
Webdriverwait有两种导入方式,分别为:
from selenium.webdriver.support.wait import webdriverwait
from selenium.webdriver.support.ui import webdriverwait
使用webdriverwait只能与until和not until两个方法进行使用;until 和 not until中传入的参数可以是
lambda匿名函数
b.预置条件expected_conditions
如果until或者not until传入的方法定位元素查找到则会反应对应的对象,如果未找到则会抛出TimeoutException异常。
EC预置条件模块具有许多类型的判断: