APP自动化测试之常见API:3.三种等待

APP自动化测试之常见API3.三种等待

1.前提

基于win10专业版64位系统+jdk1.8+python3+pycharm+android SDK+appium+unittest。一个简单的demo,引入多个常见API的使用。

2. 三种等待

GUI自动化测试代码执行过程中,往往通过定位页面元素属性来操作元素,但往往由于网络和本身代码等问题,导致要操作的元素可能没等定位到就报错找不见某属性的元素,从而脚本停止运行。通俗点讲,就是代码跑的太快,但页面元素加载过慢而导致定位不到元素出错的问题。如何解决呢?通常有如下三种解决方案。

2.1 强制等待

代码执行到该行,整个脚本直接强制停止往下执行,等待设置的对应时间后才继续往下执行后面的脚本。

from time import sleep    #要使用time模块的sleep方法必须先导包

print(“111”)

sleep(3)    #强制等待3秒在继续往下执行

print(“222”)

2.2 隐式等待

针对页面整个元素的加载,通俗讲load页面时,转圈完了就可以继续往下了,如果超过指定的时间就报错。比如设置10秒,如果在指定的时间内提前加载完页面并定位到了就直接往下,不需要等10秒结束后才继续往下。

from appium import webdriver

dr = webdriver.Remote("http://localhost:4723/wd/hub", {})

dr.implicitly_wait(10)#隐式等待

2.3显示等待

针对页面指定元素的加载,比如指定元素定位到了就直接往下,不用等整个页面加载完毕才往下。比如下方代码设置的检查机制是:最长等待10秒,每隔0.5秒检查一次,如果定位到的元素出现了,就直接往下,无序等待10秒结束才继续往下。另外0.5秒的检查频率可以自主设置。

from selenium.webdriver.support.wait import WebDriverWait

element = WebDriverWait(dr,10,0.5).until(lambda dr: dr.find_element_by_id("barcode")) # 显示等待

element.send_keys("123456")

注:三种等待至于具体使用哪种,没有固定的场景,往往在设计测试脚本时结合具体的产品业务环境,应灵活运用,往往是三者配合使用,别指望一种等待方式就把所有的测试场景问题就都解决了,即便是,也往往会存在代码整体时间效率问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值