Appium自动化(5)- 高级元素定位方式之 UI Automator API
1|0高级元素定位方式之 UI Automator API
前面介绍过根据id,classname, accessibilityid,xpath来定位元素,其他这些方法底层都是利用了 UI Automator 的 API 功能实现的
1|1UI Automator 介绍
- UI Automator 测试框架提供了一组 API 来构建 UI 测试,用于在用户应用和系统应用中执行交互
- 利用 UI Automator API,可以打开“设置”菜单或应用启动器等操作
- UI Automator 测试框架非常适合编写黑盒自动化测试,其中的测试代码不依赖于目标应用的内部
1|2UI Automator 提供的功能
- 自带的元素定位工具
- 在设备上检索状态信息并执行操作的API
- 支持跨应用 UI 测试的API
1|3UI Automator 访问设备状态
UI Automator 测试框架提供了一个 UiDevice
类,用于在 app 运行的设备上进行访问和执行等操作,它提供了以下操作
- 更改设备旋转
- 按D-pad按钮
- 按返回、主屏幕、菜单按钮
- 打开通知栏
- 对当前窗口进行屏幕截图
1|4更多的 UI Automator API
利用 UI Automator API
,可以编写稳健可靠的测试,而无需了解目标应用的实现详情
下面将列出常见的类,它们都是在 android.support.test.uiautomator 这个库下的
类 | 类名 | 作用 |
---|---|---|
UiDevice | 设备封装类 | 上面说到的,获取设备信息和设备交互 |
UiObject | 所有空间抽象类 | 表示设备上可见的一个Android控件 |
UiSelector | 控制选择器 | 在设备上查询一个或多个目标 UI 元素 |
Configurator | 配置基类 | 设置运行 UI Automator 测试所需的关键参数 |
UiScrollable | 滚动控件 | 当目标控件存在于屏幕之外时使用 |
UiCollection | 控件集合 | 控件遍历,枚举容器的 UI 元素以便计算子元素个数 |
- 其中
UiSelector
在 appium 自动化代码选择元素时候直接使用到的 - 用来生成一个定位器来选择界面中的控件元素,可以通过text,content-desc,class,和一些状态信息来进行条件过滤
UiSelector
类似于 appium中find_element_by_xxx()
方法中函数值- UiSelector官方文档:https://developer.android.google.cn/reference/android/support/test/uiautomator/UiSelector
1|5UiSelector 初体验
java语法
结合 Appium 的用法
1|6UiSelector 还可以通过哪些方法来定位元素
方法名 | 作用 |
---|---|
className(String className) | 根据class名称 |
classNameMatches(String regex) | 根据class名称的正则表达式 |
description(String desc) | 根据content-desc |
descriptionContains(String desc) | 根据content-desc中包含的字符串 |
text(String text) | 根据文本值text |
textContains(String text) | 根据文本值text包含的字符串 |
resourceId(String id) | 根据resource-id |
基本上除了xpath之外,可以通过appium实现的元素定位方式,UIAutomator也有,因为底层就是靠他实现的
xpath 虽然没有直接对应的方法,但是像下面这种 xpath 写法,UIAutomator 也有对应的方法
- // :表示任意后代关系
- x[n] : 表示第几个子节点
方法名 | 对应xpath的语法 | 作用 |
---|---|---|
childSelector(UiSelector selector) | // | 用来选择后代元素(可以是非直接子元素),对应// |
index(int index) | *[n] | index表示其父元素下的第几个节点 |
instance(int instance) | 无 | 匹配的结果所有元素里面的第几个元素 比如通过 // android.widget.TextView 找到了十个对应类型的元素,instance(1) 表示第二个对应的元素,下标是从0开始的 |
__EOF__

本文作者:😎
本文链接:https://www.cnblogs.com/dongye95/p/15027554.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/dongye95/p/15027554.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!