web自动化测试-元素等待总结

HTML加载需要时间,影响HTML加载的因素:

。服务器性能

。网络速度

。本身电脑的配置

1.隐式等待

概念:首先要等待整个页面加载完成,再去进行元素定位。如果在定位过程中找到了元素,直接返回该元素,继续后面的操作。如果在指定的时间内没有找到该元素,那么每隔0.5秒再去找,如果超过了指定时间,就会抛出异常错误:NoSuchElementException

实现方式:driver.implicitly_wait(timeout) #timeout表示的是最长的等待时间(也叫超时时间)

# 设置隐式等待时间5秒
driver.implicitly_wait(5)

注意:隐式等待只需要设置一次,对所有的元素定位方法都是有效的

2.显示等待

概念:定位指定元素,如果能找到该元素,那么就直接返回该元素,如果找不到,那么每隔指定的时间再去定位该元素,如果超出最长等待时间,那么就抛出TimeOutException

实现方式:

WebDriverWait(driver,timeout,poll_frequency=0.5).until(lambda x:x.find_element_by_id("userA"))

WebDriverWait等待类需要导入

driver指的是浏览器驱动对象

timeout表示的是最长等待时间

poll_ frequency表示的是检测的时间间隔,默认是0.5秒

后面跟上until方法,在until方法跟上匿名函数来实现显示等待

# 通过显示等待的方式定位延时输入框输入admin
element = WebDriverWait(driver, 9, 1).until(lambda x: x.find_element_by_xpath("//*[@id='wait']/input[1]"))
element.send_keys("admin")

显示等待和隐式等待的区别:

1.抛出的异常不一样,隐式等待超时,报的NosuchelementException,显示等待超时,报的是TimeOutException

2.作用域不一样,隐式等待对所有元素定位的方法都有效,只需要定义一次,显示等待只针对单个元素

3.显式等待不需要等待整个页面的DOM树加载完成显示的效率更高,工作中一般使用显示等待,而隐式等待需要整个HTML DOM树加载完成

3.强制等待

.强制等待就是让代码休眠,不做任何的操作

实现方法:time.sleep(time) 单位:秒

# 等待3秒
time.sleep(3)

.常用的场景:

。当要获取元素的文本内容时,而元素的文本内容时需要通过后台接口请求并渲染的,此时,如果使用隐式等待或者显示等待是没有办法获取到文本内容的,所以需要使用强制等待

。当要操作的元素已经存在,但是有其他的元素需要等待且与该操作的元素有业务关联,如果使用隐式等待或者显示等待对该元素进行操作的话,是没有办法进行的,也是需要使用强制等待

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值