APP自动化测试(8)-元素等待

本文介绍了APP自动化测试中四种元素等待方法:强制等待、隐式等待、使用wait_activity()和显示等待WebDriverWait。强调了每种方法的优缺点,并推荐在实际应用中根据APP响应情况使用显示等待,以便提高测试效率并方便定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        

我们在前面遇到过定位元素时元素还未载入成功,然后定位失败的情况,当这种情况时,我们需要等待元素出现。可以用4种方法

1、强制等待

所谓强制等待就是直接sleep,代码如下

import time 
time.sleep(10)

强制等待存在几个问题

  • 无论后面步骤元素是否可以定位,都必须等待设置的时间,非常影响自动化测试的效率
  • 时间长短不好把握,设长了影响测试的效率,设短了可能元素还未载入成功,导致执行失败

所以一般不建议使用强制等待

2、隐式等待implicitly_wait()

隐式等待的方法是全局设置,存货与webdriver对象的生命周期,设置代码如下

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
driver.implicitly_wait(10)

隐式等待是在定位元素时,等到页面所有元素都加载成功后才执行下一步,如果超时时间未定位到元素则抛异常。

隐式等待也存在一些问题

  • 当定位的元素已经出来时,页面元素未加载成功,还是会一直等待,影响测试效率
  • 抛的异常无法自己设置(如下为关键异常信息),不容易看出是什么元素出问题
selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.

3、用wait_activity()等待页面出现

当操作为一个元素下一个元素迟迟不出现的情况肯定是切好页面了,所以也可以用wait_activity()来等待预期出现的activity出现后再做下一步元素定位操作。

示意代码如下

#点击记一笔按钮
#time.sleep(5)
add_trans_btn = driver.find_element(AppiumBy.ID,"com.mymoney:id/add_trans_btn") 
print("add_trans_btn 的文本是,",add_trans_btn.text)
add_trans_btn.click()
#上述操作后跳转到新的activity,com.mymoney.biz.addtrans.activity.AddTransActivityV12
#等待页面出现
driver.wait_activity(“com.mymoney.biz.addtrans.activity.AddTransActivityV12”)

此方法也有一些问题

  • 需要知道操作后下一个activity的名字,操作起来耗费时间
  • 有时候activity虽然出现了,可是我们要定位的元素还是没载入成功,最后还是会失败

4、显示等待WebDriverWait()

WebDriverWait()可以应用到确切的元素,而且可以设置抛出异常的类型和抛出异常的消息,方便进行定位

WebDriverWait需要配合until或until_not使用,until用于等待元素出现,until_not用于等待元素消失。

WebDriverWait需要通过“from selenium.webdriver.support.wait import WebDriverWait”引用。

参数说明:

  • driver:浏览
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六天测试工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值