有时候为了保证脚本运行的稳定性,需要脚本中添加等待时间。
sleep():设置固定休眠时间。python 的time 包提供了休眠方法sleep() ,导入time 包后就可以使用sleep()进行脚本的执行过程进行休眠。
implicitly_wait():是webdirver 提供的一个超时等待。隐性的等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。
WebDriverWait():同样也是webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。
1、WebDriverWait()方法
运行结果
WebDriverWait()
详细格式如下:
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver - WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)
timeout - 最长超时时间,默认以秒为单位
poll_frequency - 休眠时间的间隔(步长)时间,默认为0.5 秒
ignored_exceptions - 超时后的异常信息,默认情况下抛NoSuchElementException 异常。
WebDriverWait()会配合until()和until_not()方法一起使用,根据判断条件而进行灵活进行处理时间等待问题,他会不断的根据你设定的条件去判断,直到超过你设置的等待时间,如果设置的条件满足,然后进行下一步操作,如果没有满足会报一'selenium.common.exceptions.TimeoutException: Message: '错误
下面是unit()和until_not()方法的说明。
until(method, message=’ ’)调用该方法提供的驱动程序作为一个参数,直到返回值不为False。
until_not(method, message=’ ’)调用该方法提供的驱动程序作为一个参数,直到返回值为False。
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。
简单使用:http://www.cnblogs.com/alan-babyblog/p/5163408.html
2、implicitly_wait()方法和sleep()方法
运行结果:
sleep()
sleep()方法以秒为单位,假如休眠时间小时1 秒,可以用小数表示。
implicitly_wait()
implicitly_wait()方法比sleep() 更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。
本文参考:《selenium自动化实战基于Python》
http://www.cnblogs.com/mengyu/p/6972968.html
网友评论