测试 UiAutomator

  
跨应用功能性 UI 测试框架
最新更新 稳定版 候选发布版 Beta 版 Alpha 版
2024 年 6 月 26 日 2.3.0 - - 2.4.0-alpha01

声明依赖项

要添加对 test 的依赖项,您必须将 Google Maven 存储库添加到您的项目中。阅读Google 的 Maven 存储库以了解更多信息。

在应用或模块的build.gradle文件中添加所需构件的依赖项

Groovy

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha01"
}

Kotlin

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha01")
}

有关依赖项的更多信息,请参阅添加构建依赖项

反馈

您的反馈有助于使 Jetpack 变得更好。如果您发现新问题或有改进此库的想法,请告知我们。在创建新问题之前,请查看此库中现有的问题。您可以通过点击星形按钮为现有问题添加您的投票。

创建新问题

有关更多信息,请参阅问题跟踪器文档

版本 2.4

版本 2.4.0-alpha01

2024 年 6 月 26 日

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

API 更改

  • 已弃用Configurator#getKeyInjectionDelaysetKeyInjectionDelay,因为现在文本始终直接注入而不是通过按键注入,因此该参数未使用。(I3bcc5)。

错误修复

  • 更新了UiObject2运动事件之间的延迟,以考虑动态刷新率(即平滑显示)(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 基于百分比的边距方法重命名为 setGestureMarginPercentagesetGestureMarginsPercentage 以保持一致性 (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 索引) 信息。(I5dfa4)。
  • 添加了 UiDevice 方法以获取、设置、冻结和解冻辅助显示器的旋转。(I912cd)。

错误修复

  • 在无法检测到滚动结束时,为 UiObject2#scrollUntil 添加了重试机制 (Ibac6f)。
  • 修复了如果重新创建 Instrumentation 实例,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)。