前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >selenium&appium中的三种等待方式---基于python

selenium&appium中的三种等待方式---基于python

作者头像
测试开发社区
发布2019-09-20 16:13:24
1.6K0
发布2019-09-20 16:13:24
举报
文章被收录于专栏:测试开发社区测试开发社区

我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中(appium通用)常用的等待分为显示等待WebDriverWait()隐式等待implicitly_wait()强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别

在前面的博文中简单介绍了《强制等待和隐士等待的区别和理解》,本文再详细的结合案例进行理解。

  • sleep(): 强制等待,设置固定休眠时间。 python 的 time 包提供了休眠方法 sleep() , 导入 time 包后就可以使用 sleep(),进行脚本的执行过程进行休眠。
  • implicitly_wait():隐石等待,也叫智能等待,是 webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。
  • webdirverwait:显示等待,在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException

下面通过一个实例来加深理解:

#coding=utf-8 from selenium import webdriver #导入 WebDriverWait 包 from selenium.webdriver.support.ui import WebDriverWait #导入 time 包 from sleep import sleep driver = webdriver.Firefox() driver.get("http://www.baidu.com") #WebDriverWait()方法使用 element=WebDriverWait(driver, 10).until(lambda driver : driver.find_element_by_id("kw")) # element.send_keys("selenium") #添加智能等待 driver.implicitly_wait(30) #implicitly_wait()方法比 sleep() 更加智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待 driver.find_element_by_id("su").click() #添加固定休眠时间 sleep(5) #sleep()方法以秒为单位,假如休眠时间小时 1 秒,可以用小数表示。 driver.quit()

关于强制等待和隐式等待在上面注释中已做了说明

下面主要介绍一下WebDriverWait() 显示等待,语法格式如下:

WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until(self,method,message=)

或者

代码语言:javascript
复制
WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until_not(self,method,message=)self, 函数本身,在实际使用的时候不需要输入
driver, webdriver的驱动程序,如(IE、FireFox、chrome、safari等)
timeout,超时时间,默认以秒为单位
poll_frequency,休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
ignored_exceptions, 超时后的异常信息,默认情况下抛driver, webdriver的驱动程序,如(IE、FireFox、chrome、safari等)
timeout,超时时间,默认以秒为单位
poll_frequency,休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
ignored_exceptions, 超时后的异常信息,默认情况下抛 “NoSuchElementException",大家可以定义忽略的异常信息
WebDriverWait,一般由until或until_not配合使用
until(method,message="),调用该方法提供的驱动程序做为一个参数,直到返回值不为False
until_not(method,message="),调用该方法提供的驱动程序做为一个参数,直到返回值为False
实例:
代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.common.exceptions import NoAlertPresentException,TimeoutException,NoSuchElementExceptiondriver=webdriver.Firefox()
driver.get("http:www.baidu.com")
WebDriverWait(driver,10,1,NoSuchElementException).until(lambda driver:driver.find_element_by_name("d_status"))
代码语言:javascript
复制

我的猫在屋顶睡着了

本文转自:https://www.cnblogs.com/VseYoung/p/selenium_wait_3_python.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档