技术分享 | app自动化测试(Android)--元素定位方式与隐式等待

简介: 本文节选自霍格沃兹测试开发学社内部教材元素定位是 UI 自动化测试中最关键的一步,假如没有定位到元素,也就无法完成对页面的操作。那么在页面中如何定位到想要的元素,本小节讨论 Appium 元素定位方式。

本文节选自霍格沃兹测试开发学社内部教材

元素定位是 UI 自动化测试中最关键的一步,假如没有定位到元素,也就无法完成对页面的操作。那么在页面中如何定位到想要的元素,本小节讨论 Appium 元素定位方式。

Appium的元素定位方式

定位页面的元素有很多方式,比如可以通过 ID、accessibility_id、XPath 等方式进行元素定位,还可以使用 Android、iOS 工作引擎里面提供的定位方式。

隐式等待

设置隐式等待后可以在规定的时间之内去动态的等待元素出现。

假如设置了隐式等待时长为 10 秒,会在 10 秒之内不停的查找元素,如果第 2 秒就找到了元素,就继续执行后面的测试代码,如果超出了设置时间则抛出异常。

一旦设置了隐式等待,则它会存在整个 WebDriver 对象实例的生命周期中,比如:每次调用 find_element 或者 find_elements 方法的时候,会自动触发隐式等待。

隐式等待比强制等待更加智能,后者只能选择一个固定的时间等待,前者可以在一个时间范围内智能的等待。代码示范:

  • Python 版本
...
self.driver = webdriver.Remote(server, desired_caps)
self.driver.implicitly_wait(15)
...
  • Java 版本
...
driver = new AndroidDriver(remoteUrl, desiredCapabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
...

Appium 的 log 中能发现以下的情况,注意下面的 xx 和 xxy 是对 ID 的简写:

[W3C] Matched W3C error code 'no such element' to NoSuchElementError
[BaseDriver] Waited for 1495 ms so far
[WD Proxy] Matched '/element' to command name 'findElement'
……
[W3C] Matched W3C error code 'no such element' to NoSuchElementError
[BaseDriver] Waited for 2707 ms so far
[WD Proxy] Matched '/element' to command name 'findElement'
……
[HTTP] <-- POST /wd/hub/session/xx/element 200 6653 ms - 137
[HTTP]
[HTTP] --> POST /wd/hub/session/xx/element/xxy/click
[HTTP] {"id":"xxy"}

从日志上可以看出来,Appium 在进行元素查找的时候,失败后不会直接抛出异常停止脚本执行,而是每过一段时间去找一次元素。上面的例子所示,在 6.7 秒左右等到了元素的返回,此时结束等待,去执行点击操作。

获取更多相关资料:

https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=Aliyun&timestamp=1654566358&author=MM

相关文章
|
30天前
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
133 0
|
30天前
|
测试技术 UED Python
App自动化测试:高级控件交互技巧
Appium 的 Actions 类支持在移动应用自动化测试中模拟用户手势,如滑动、长按等,增强交互性测试。ActionChains 是 Selenium 的概念,用于网页交互,而 Actions 专注于移动端。在Python中,通过ActionChains和W3C Actions可以定义手势路径,例如在手势解锁场景中,先点击设置,然后定义触点移动路径执行滑动解锁,最后验证解锁后的元素状态。此功能对于确保应用在复杂交互下的稳定性至关重要。
42 5
|
6天前
|
安全 Android开发 数据安全/隐私保护
同样的 APP 为何在 Android 8 以后网络感觉变卡?
【6月更文挑战第8天】Android 8 及以后系统中,APP 网络感觉变卡源于更严格的安全机制和后台限制,系统对网络优化的侧重改变,以及APP自身兼容性问题。开发者需优化APP,适应新系统,用户可更新APP或检查权限设置。通过共同努力,有望改善网络卡顿现象,提升用户体验。
|
16天前
|
运维 监控 Android开发
构建高效自动化运维系统的策略与实践构建高效Android应用:Kotlin协程的实践指南
【5月更文挑战第29天】随着信息技术的迅猛发展,企业IT基础设施变得日益复杂,传统的手动运维模式已难以满足高效率、高稳定性的要求。本文将深入探讨如何通过自动化工具和策略来构建一个高效的自动化运维系统。文中不仅分析了自动化运维的必要性,还详细介绍了实现过程中的关键步骤,包括监控、配置管理、故障响应等,并结合实际案例分析其效果,以期为读者提供一套行之有效的自动化运维解决方案。
|
28天前
|
数据采集 Java 开发工具
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
一文2500字从0到1教你搭建Android自动化python+appium环境
|
30天前
|
Java 开发工具 Android开发
Android mk 集成app
Android mk 集成app
22 5
|
30天前
|
JavaScript 测试技术 Python
【如何学习Python自动化测试】—— 时间等待
【如何学习Python自动化测试】—— 时间等待
11 1
|
30天前
|
移动开发 jenkins 持续交付
jenkins编译H5做的android端编译卫士app记录
jenkins编译H5做的android端编译卫士app记录
18 0
|
30天前
|
XML 数据格式
Xpath高阶定位技巧,轻松玩转App测试元素定位!
XPath是一种用于XML文档中节点定位的语言,支持逻辑运算符(and、or、not)、轴定位、谓词和内置函数。
29 0
|
30天前
|
Android开发
Android APP 隐藏系统软键盘的方法
Android APP 隐藏系统软键盘的方法
57 0