测试 Uiautomator

  
适用于跨应用功能界面测试的框架
最近更新时间 稳定版 候选版 Beta 版 Alpha 版
2024 年 2 月 21 日 2.3.0 - - -

声明依赖项

如需添加 Test 的依赖项,您必须将 Google Maven 制品库添加到项目中。如需了解详情,请参阅 Google 的 Maven 制品库

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

Groovy

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

Kotlin

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

如需详细了解依赖项,请参阅添加 build 依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 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)。
  • bug 修复和可靠性
    • 修复了显示大小计算偶尔不正确并且可能会忽略屏幕部分的问题 (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)

bug 修复

  • 改进了找不到或无法访问辅助显示设备时抛出的错误 (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)。

bug 修复

  • 针对无法检测到滚动结束的 UiObject2#scrollUntil 添加了重试操作 (Ibac6f)。
  • 修复了在重新创建 UiDeviceUiDevice 会使用过时的 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)。

bug 修复

  • 更新了 MotionEvent 注入,通过优先考虑手势准确性而非速度来减少不稳定性 (678ca3)。
  • 添加了对会占用大量资源的方法的跟踪记录,以识别性能瓶颈 (d17de3)。
  • 添加了启动 UiAutomation 连接时的重试机制 (048caf)。
  • 修复了 UiDevice#dumpWindowHierarchy 中可能的 null 节点 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

bug 修复

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

bug 修复

  • 修复了在查询或等待对象时偶尔抛出 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 变更

  • 为所有公共方法添加了 null 性注解。
  • MotionEvent 注入改为了异步,并有短暂的延迟,使 UiObject2 手势更流畅。
  • 减小了轮询时间间隔,同时将等待时间从 1000 毫秒缩短为 100 毫秒。
  • 更新了 UiDevice#wakeUpUiDevice#sleep,以使用 KEYCODE_WAKEUPKEYCODE_SLEEP 来支持替换电源按钮的设备。
  • 添加了 UiObject2#getDisplayId,并且支持在多个显示屏中查找和管理对象。
  • 添加了 UiObject#clickUiObject2#clickAndWait 方法,以完成基于坐标的点击操作。

bug 修复

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