测试 Uiautomator

  
跨应用功能 UI 测试框架
最新更新 稳定版 发布候选版 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(I53a3bb/419006806

错误修复

版本 2.4.0-alpha03

2025 年 5 月 20 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha03 已发布。版本 2.4.0-alpha03 包含这些提交

错误修复

  • 修复了在某些情况下 waitForStableInActiveWindow 抛出 NPE 的问题(Ibf50fb/417046391

版本 2.4.0-alpha02

2025 年 5 月 7 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 已发布。版本 2.4.0-alpha02 包含这些提交

新功能

  • Uiautomator API 的初始形态。UiAutomatorTestScope 可以通过工厂 uiAutomator 创建,从而访问新的 onView API。
  • 初始 Lint 规则,用于警告 AccessibilityNodeInfo#getText 的用法并建议使用 textAsString

API 更改

  • 添加了 Configurator#setDefaultDisplayId,用于设置显示 ID 以限制所有搜索(Icdf17)。
  • SearchableUiDeviceUiObject2 共享的接口)公开,以方便使用(I67f18)。

错误修复

  • 修复了 UiDevice#pressKeyCodes 中元键的处理问题。(I73f80)。
  • 更新了 UiDevice#getWindowRoots,使其始终按 Z 轴顺序返回根(I87426)。
  • 修复了某些手势不完整的问题(I60dd3If4edd)。
  • 修复了调用 UiDevice#scrollUntil 时偶尔出现无限循环的问题(I39989)。

版本 2.4.0-alpha01

2024 年 6 月 26 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha01 已发布。版本 2.4.0-alpha01 包含这些提交

API 更改

  • 废弃了 Configurator#getKeyInjectionDelaysetKeyInjectionDelay,因为现在文本总是直接注入而不是通过按键注入,所以参数不再使用。(I3bcc5)。

错误修复

  • 更新了 UiObject2 运动事件之间的延迟,以适应动态刷新率(即 Smooth Display)(I43f12)。
  • 通过定期使辅助功能缓存失效,减少了某些 UI 上辅助功能节点陈旧导致的抖动(I3be25)。
  • 修复了在陈旧的 UiObject2 上调用 toStringhashCode 时发生 StaleObjectException 的问题。(I38ea1)。
  • 通过跳过不必要的 waitForIdle 调用,改进了 UiWatcher 性能。(I8c65e)。
  • 修复了 javadoc 不准确的问题,特别是阐明了每个 Configurator 参数的使用时机。(Ie10b1I71631)。

版本 2.3.0

版本 2.3.0

2024 年 2 月 21 日

androidx.test.uiautomator:uiautomator:2.3.0 已发布。版本 2.3.0 包含这些提交。

自 2.2.0 以来重要更改

  • 多显示屏支持:添加了对跨多个显示屏查找和操作对象的支持,以及用于管理辅助显示屏的 UiDevice 方法(Ie6544I912cd)。
  • 新选择器:
    • 添加了 By.displayId 以通过显示 ID 选择对象(I1825b)。
    • 添加了 By.hasParentBy.hasAncestor 以根据父级选择对象(I93c36)。
    • 添加了 By.hint 方法以通过其提示文本选择对象(Idd345)。
  • 自定义条件:公开了 Condition 接口以支持自定义等待条件,并添加了相应的 UiDevice#waitUiObject2#waitUiObject2#scrollUntil 方法(27c0ea099d6e)。
  • 错误修复和可靠性
    • 修复了显示尺寸计算偶尔不正确并可能忽略屏幕部分的问题(Ifc016)。测试中使用的坐标和偏移量可能需要调整。
    • 更新了 MotionEvent 注入以提高准确性(678ca3)并更好地模拟用户手势(454450)。
    • 提高了滚动(I7b059)、旋转(c6cea0)、长按(49572b)、捏合(3c619a)等的可靠性。

版本 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 基于百分比的边距方法重命名为 setGestureMarginPercentagesetGestureMarginsPercentageI24435

错误修复

  • 改进了未找到或无法访问辅助显示屏时抛出的错误信息(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.hasParentBy.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)。
  • 修复了查询或操作私有显示器时意外错误的问题(985db67053d4)。

版本 2.3.0-alpha03

2023 年 4 月 19 日

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 已发布。版本 2.3.0-alpha03 包含这些提交。

API 更改

  • 公开了一个 Condition 接口,允许自定义等待条件,而不仅仅依赖于 Until 中的内置条件,并更新了 UiDevice#waitUiObject2#wait 方法以接受此接口(27c0ea)。
  • 添加了 UiObject2#scrollUntil 以支持滚动直到满足条件,并与 UiScrollable 保持一致(099d6e)。
  • 添加了 UiDevice#setOrientationPortraitsetOrientationLandscape 以方便在不同设备类型之间进行旋转(e13cb7)。
  • 添加了 UiObject2#setGestureMarginPercent 以支持设置相对于对象大小的边距。(Ib8c77

错误修复

  • 修复了 UiScrollable 方法在 SDK 18 到 22 上偶尔使用无效坐标的问题(b53ece)。
  • 修复了 UiObject2#setTextclearText 在 SDK 18 和 19 上无法修改文本的问题(77e41d)。
  • 修复了 UiWatcher 未按正确顺序执行的问题(c85f92)。
  • 修复了 UiDevice 屏幕方向更改后设备旋转可能尚未完成的问题(c6cea0)。
  • 提高了长按、拖动和捏合的可靠性(49572b3c619a)。

版本 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)。
  • 更新了 UiObject2 MotionEvent 之间的延迟为显示刷新率的两倍,以更好地模拟用户手势(454450)。
  • 添加了对多行文本和描述匹配的支持(1625e6b/255787130)。

错误修复

  • 修复了查询或等待对象时偶尔抛出 StaleObjectException 的问题(4cbcc0)。
  • 修复了 UiScrollable#scrollToBeginningscrollToEndflingToBeginningflingToEnd 的返回值未指示是否已到达开始/结束的问题(d33e06)。
  • 修复了 UiScrollable#scrollForwardscrollBackward 方法忽略已配置超时的问题(29e4f3)。
  • 修复了 BySelector 复制构造函数未处理深度选择器的问题(6c7b91)。
  • 修复了 UiObject#pinchInpinchOut 中无效百分比值的处理问题(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#wakeUpUiDevice#sleep,以使用 KEYCODE_WAKEUPKEYCODE_SLEEP,以支持覆盖电源按钮的设备。
  • 添加了 UiObject2#getDisplayId 并支持在多个显示器上查找和管理对象。
  • 添加了 UiObject#clickUiObject2#clickAndWait 方法,用于通过坐标点击某个点。

错误修复

  • 修复了显示尺寸计算偶尔不正确并可能忽略屏幕部分的问题,尤其是在多窗口模式下(Ifc016c)。
  • 修复了 UiDevice#takeScreenshot 中屏幕截图的缩放问题(Id80ad6)。
  • 提高了 Until.scrollFinishedUiObject2#scroll 的可靠性(I7b0595)。
  • 修复了严格模式 IncorrectContextUseViolation 警告(Iffa6a0)。