测试 Uiautomator
| 最新更新 | 稳定版 | 发布候选版 | Beta 版 | Alpha 版 |
|---|---|---|---|---|
| 2025 年 6 月 4 日 | 2.3.0 | - | - | 2.4.0-alpha04 |
声明依赖项
要添加对测试的依赖项,您必须将 Google Maven 代码库添加到您的项目中。有关详情,请参阅Google 的 Maven 代码库。
在应用的 build.gradle 文件或模块中添加所需构件的依赖项
Groovy
dependencies { // Use to implement UIAutomator tests androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha04" }
Kotlin
dependencies { // Use to implement UIAutomator tests androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha04") }
有关依赖项的更多信息,请参阅添加构建依赖项。
反馈
您的反馈有助于改进 Jetpack。如果您发现新问题或对改进此库有任何想法,请告知我们。在创建新问题之前,请查看此库中现有问题。您可以通过点击星形按钮为您关注的现有问题投票。
有关更多信息,请参阅问题跟踪器文档。
版本 2.4
版本 2.4.0-alpha04
2025 年 6 月 4 日
androidx.test.uiautomator:uiautomator:2.4.0-alpha04 已发布。版本 2.4.0-alpha04 包含这些提交。
API 更改
- 将
onView重命名为onElement,以阐明其适用于 Compose(I53a3b、b/419006806)
错误修复
- 修复
waitForStableInActiveWindow(290457f1、b/420349130)
版本 2.4.0-alpha03
2025 年 5 月 20 日
androidx.test.uiautomator:uiautomator:2.4.0-alpha03 已发布。版本 2.4.0-alpha03 包含这些提交。
错误修复
- 修复了在某些情况下
waitForStableInActiveWindow抛出 NPE 的问题(Ibf50f、b/417046391)
版本 2.4.0-alpha02
2025 年 5 月 7 日
androidx.test.uiautomator:uiautomator:2.4.0-alpha02 已发布。版本 2.4.0-alpha02 包含这些提交。
新功能
- 新
UiautomatorAPI 的初始形态。UiAutomatorTestScope可以通过工厂uiAutomator创建,从而访问新的onViewAPI。 - 初始 Lint 规则,用于警告
AccessibilityNodeInfo#getText的用法并建议使用textAsString。
API 更改
- 添加了
Configurator#setDefaultDisplayId,用于设置显示 ID 以限制所有搜索(Icdf17)。 - 将
Searchable(UiDevice和UiObject2共享的接口)公开,以方便使用(I67f18)。
错误修复
- 修复了
UiDevice#pressKeyCodes中元键的处理问题。(I73f80)。 - 更新了
UiDevice#getWindowRoots,使其始终按 Z 轴顺序返回根(I87426)。 - 修复了某些手势不完整的问题(I60dd3、If4edd)。
- 修复了调用
UiDevice#scrollUntil时偶尔出现无限循环的问题(I39989)。
版本 2.4.0-alpha01
2024 年 6 月 26 日
androidx.test.uiautomator:uiautomator:2.4.0-alpha01 已发布。版本 2.4.0-alpha01 包含这些提交。
API 更改
- 废弃了
Configurator#getKeyInjectionDelay和setKeyInjectionDelay,因为现在文本总是直接注入而不是通过按键注入,所以参数不再使用。(I3bcc5)。
错误修复
- 更新了
UiObject2运动事件之间的延迟,以适应动态刷新率(即 Smooth Display)(I43f12)。 - 通过定期使辅助功能缓存失效,减少了某些 UI 上辅助功能节点陈旧导致的抖动(I3be25)。
- 修复了在陈旧的
UiObject2上调用toString或hashCode时发生StaleObjectException的问题。(I38ea1)。 - 通过跳过不必要的
waitForIdle调用,改进了UiWatcher性能。(I8c65e)。 - 修复了 javadoc 不准确的问题,特别是阐明了每个
Configurator参数的使用时机。(Ie10b1、I71631)。
版本 2.3.0
版本 2.3.0
2024 年 2 月 21 日
androidx.test.uiautomator:uiautomator:2.3.0 已发布。版本 2.3.0 包含这些提交。
自 2.2.0 以来重要更改
- 多显示屏支持:添加了对跨多个显示屏查找和操作对象的支持,以及用于管理辅助显示屏的
UiDevice方法(Ie6544、I912cd)。 - 新选择器:
- 自定义条件:公开了
Condition接口以支持自定义等待条件,并添加了相应的UiDevice#wait、UiObject2#wait和UiObject2#scrollUntil方法(27c0ea、099d6e)。 - 错误修复和可靠性
版本 2.3.0-rc01
2024 年 2 月 7 日
androidx.test.uiautomator:uiautomator:2.3.0-rc01 已发布,无任何更改。版本 2.3.0-rc01 包含这些提交。
版本 2.3.0-beta01
2023 年 12 月 13 日
androidx.test.uiautomator:uiautomator:2.3.0-beta01 已发布。版本 2.3.0-beta01 包含这些提交。
API 更改
- 为保持一致性,将
UiObject2基于百分比的边距方法重命名为setGestureMarginPercentage和setGestureMarginsPercentage(I24435)
错误修复
- 改进了未找到或无法访问辅助显示屏时抛出的错误信息(116b23)
版本 2.3.0-alpha05
2023 年 11 月 1 日
androidx.test.uiautomator:uiautomator:2.3.0-alpha05 已发布。版本 2.3.0-alpha05 包含这些提交。
API 更改
- 添加了
UiObject2#getDrawingOrder以公开绘制顺序(z-index)信息。(I5dfa4)。 - 添加了
UiDevice方法来获取、设置、冻结和解冻辅助显示屏的旋转。(I912cd)。
错误修复
- 在无法检测到滚动结束时,添加了对
UiObject2#scrollUntil的重试(Ibac6f)。 - 修复了如果
UiDevice被重新创建,它会使用陈旧的Instrumentation实例的问题(I18cae)。 - 修复了在转储节点时如果无法确定显示 ID 可能会出现 NPE 的问题(Icafcb)。
- 在对不可点击/不可滚动对象执行点击/滚动操作时添加了警告(I4a5d9)。
- 降低了默认
UiObject2滚动速度以提高可靠性(I5e071)。
版本 2.3.0-alpha04
2023 年 7 月 26 日
androidx.test.uiautomator:uiautomator:2.3.0-alpha04 已发布。版本 2.3.0-alpha04 包含这些提交。
API 更改
- 添加了
By.hasParent和By.hasAncestor以支持根据父级查找对象(I93c36)。 - 添加了
UiObject2#getHint以检索对象的提示文本,并添加了By.hint方法以根据其提示文本选择对象(Idd345)。 - 添加了
By.displayId以支持根据对象所在的显示屏选择对象(I1825b)。 - 添加了
UiDevice#getDisplayHeight(int)和UiDevice#getDisplayWidth(int)方法,以通过显示 ID 查找显示屏的尺寸(Ie6544)。 - 重新添加了
wait(SearchCondition, long)和wait(UiObject2Condition, long)方法以实现向后兼容性(Iebfda)。 - 将
UiDevice#executeShellCommand更改为公共但不推荐使用,而不是隐藏(Ic48a1)。
错误修复
- 更新了
MotionEvent注入,通过优先考虑手势准确性而非速度来减少抖动(678ca3)。 - 为资源密集型方法添加了追踪,以识别性能瓶颈(d17de3)。
- 在启动 UiAutomation 连接时添加了重试机制(048caf)。
- 修复了
UiDevice#dumpWindowHierarchy中空节点可能导致的 NPE 问题(b725eb)。 - 修复了查询或操作私有显示器时意外错误的问题(985db6、7053d4)。
版本 2.3.0-alpha03
2023 年 4 月 19 日
androidx.test.uiautomator:uiautomator:2.3.0-alpha03 已发布。版本 2.3.0-alpha03 包含这些提交。
API 更改
- 公开了一个
Condition接口,允许自定义等待条件,而不仅仅依赖于Until中的内置条件,并更新了UiDevice#wait和UiObject2#wait方法以接受此接口(27c0ea)。 - 添加了
UiObject2#scrollUntil以支持滚动直到满足条件,并与UiScrollable保持一致(099d6e)。 - 添加了
UiDevice#setOrientationPortrait和setOrientationLandscape以方便在不同设备类型之间进行旋转(e13cb7)。 - 添加了
UiObject2#setGestureMarginPercent以支持设置相对于对象大小的边距。(Ib8c77)
错误修复
- 修复了
UiScrollable方法在 SDK 18 到 22 上偶尔使用无效坐标的问题(b53ece)。 - 修复了
UiObject2#setText和clearText在 SDK 18 和 19 上无法修改文本的问题(77e41d)。 - 修复了
UiWatcher未按正确顺序执行的问题(c85f92)。 - 修复了
UiDevice屏幕方向更改后设备旋转可能尚未完成的问题(c6cea0)。 - 提高了长按、拖动和捏合的可靠性(49572b、3c619a)。
版本 2.3.0-alpha02
2023 年 1 月 11 日
androidx.test.uiautomator:uiautomator:2.3.0-alpha02 已发布。版本 2.3.0-alpha02 包含这些提交。
API 更改
- 重新设计了整个库中的日志记录,以提供更多信息,警告可能出现的问题,并提高一致性。
- 添加了
UiDevice#pressKeyCodes以支持同时按多个键,例如按 POWER 和 VOLUME_DOWN 以截屏(22e525)。 - 添加了
UiDevice#setCompressedLayoutHierarchy并废弃了UiDevice#setCompressedLayoutHeirarchy以修复方法名称中的拼写错误(4e2f65)。 - 将
UiAutomatorInstrumentationTestRunner标记为已废弃,因为它处理废弃的UiAutomatorTestCase,并且不再需要(be6c85)。 - 更新了
UiObject2MotionEvent之间的延迟为显示刷新率的两倍,以更好地模拟用户手势(454450)。 - 添加了对多行文本和描述匹配的支持(1625e6、b/255787130)。
错误修复
- 修复了查询或等待对象时偶尔抛出
StaleObjectException的问题(4cbcc0)。 - 修复了
UiScrollable#scrollToBeginning、scrollToEnd、flingToBeginning和flingToEnd的返回值未指示是否已到达开始/结束的问题(d33e06)。 - 修复了
UiScrollable#scrollForward和scrollBackward方法忽略已配置超时的问题(29e4f3)。 - 修复了
BySelector复制构造函数未处理深度选择器的问题(6c7b91)。 - 修复了
UiObject#pinchIn和pinchOut中无效百分比值的处理问题(01b973)。 - 修复了在底层
UiAutomation连接重置后,多窗口支持会丢失的罕见问题(1bb956)。
版本 2.3.0-alpha01
2022 年 9 月 7 日
androidx.test.uiautomator:uiautomator:2.3.0-alpha01 已发布。版本 2.3.0-alpha01 包含这些提交。
API 更改
- 注释了所有公共方法的空值。
- 将
MotionEvent注入切换为异步,并带有短暂延迟,以实现更平滑的UiObject2手势。 - 将等待时的轮询间隔从 1000 毫秒缩短到 100 毫秒。
- 更新了
UiDevice#wakeUp和UiDevice#sleep,以使用KEYCODE_WAKEUP和KEYCODE_SLEEP,以支持覆盖电源按钮的设备。 - 添加了
UiObject2#getDisplayId并支持在多个显示器上查找和管理对象。 - 添加了
UiObject#click和UiObject2#clickAndWait方法,用于通过坐标点击某个点。
错误修复
- 修复了显示尺寸计算偶尔不正确并可能忽略屏幕部分的问题,尤其是在多窗口模式下(Ifc016c)。
- 修复了
UiDevice#takeScreenshot中屏幕截图的缩放问题(Id80ad6)。 - 提高了
Until.scrollFinished和UiObject2#scroll的可靠性(I7b0595)。 - 修复了严格模式
IncorrectContextUseViolation警告(Iffa6a0)。