time.sleep(等待时间)
现有需求如下:用户登录商城成功,然后需要点击【进入商城购物】按钮去购物,但是登录系统成功以后,会停留在一个提示登录成功的页面2s,2s以后才能看到【进入商城购物】按钮。
因为登录成功以后需要先等待2s才能看到【进入商城购物】按钮,这时登录成功后直接点击去购物的按钮系统就会因为找不到这个按钮而报错。
如果我们在点击【进入商城购物】按钮前加个等待时间,等系统跳转页面成功才去点击就没问题了
加了等待时间我们再来运行代码看看效果
查看页面跳转购物页面也是成功的。
隐式等待:implicitly_wait(等待时间)
上面我们说到的那个time.sleep(等待时间)有个弊端,每段需要等待的代码前面都要加sleep,这样代码看起来不好看,这时我们可以考虑用隐式等待。
隐式等待的好处:只需要在浏览器打开的时候写一次,后面的代码都会生效
隐式等待的弊端:有些特殊的情况隐式等待不会起作用,比如页面没有重新加载,该操作不起作用;弹出框也是不受隐式等待判断的
举个例子:我们要去修改用户的个人信息,修改完了以后会有一个弹出框提示是否修改成功,我们需要点击这个弹出框的【确定】按钮。但是这个弹出框需要等待2s才会弹出,隐式等待控制不了弹出框的等待时间,这时我们可以考虑用显示等待
显示等待:WebDriverWait(什么的等待,最大等待时间,每隔多久去判断一次)
WebDriverWait(Chrome,30,0.5),输入参数意思如下:要等待的是浏览器,最大等待时间30s,每隔0.5s去判断一下满足条件没,满足了才往下走。
a、先导包
b、期望做些什么,这里是期望弹出框出现
c、这里期望的是弹出框出现才往下走
总结:
time.sleep(等待时间):可以实现时间等待,但是每个要等待的操作前都要加这句话才起效果
隐式等待:在浏览器打开的时候写一次就行,但是对某些操作不起效果,比如浏览器没有重新加载的时候隐式等待不起效果,弹出框也不受隐式等待控制
显示等待:可以智能判断是否满足条件,满足才会往下走