测试 Uiautomator
最近更新时间 | 稳定版 | 候选版 | 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") }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库有任何改进建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 2.4
版本 2.4.0-alpha01
2024 年 6 月 26 日
发布了 androidx.test.uiautomator:uiautomator:2.4.0-alpha01
。版本 2.4.0-alpha01 中包含这些提交内容。
API 变更
- 废弃了
Configurator#getKeyInjectionDelay
和setKeyInjectionDelay
,因为现在不使用该参数,因为文本始终是直接注入的,而不是通过按键注入。(I3bcc5)。
bug 修复
- 更新了
UiObject2
动作事件之间的延迟时间,以考虑动态刷新率(即流畅画面)(I43f12)。 - 通过定期使无障碍功能缓存失效,减少了某些界面上的无障碍功能节点过时的不稳定问题 (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)。 - bug 修复和可靠性
版本 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)
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)。 - 修复了
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)。
bug 修复
- 更新了
MotionEvent
注入,通过优先考虑手势准确性而不是速度来减少不稳定性 (678ca3)。 - 添加了对占用大量资源的方法的跟踪,以确定性能瓶颈 (d17de3)。
- 添加了启动 UiAutomation 连接时的重试机制 (048caf)。
- 修复了
UiDevice#dumpWindowHierarchy
中 null 节点可能出现的 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)
bug 修复
- 修复了在 SDK 18 到 22 中偶尔使用无效坐标的
UiScrollable
方法的问题 (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)。 - 将
UiObject2
MotionEvent
之间的延迟时间更新为显示刷新率的 2 倍,以更好地模拟用户手势 (454450)。 - 添加了对多行文本和说明匹配的支持(1625e6、b/255787130)。
bug 修复
- 修复了在查询或等待对象时偶尔抛出
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 变更
- 为所有公共方法添加了 null 性注解。
MotionEvent
注入改为了异步,并有短暂的延迟,使UiObject2
手势更流畅。- 减小了轮询时间间隔,同时将等待时间从 1000 毫秒缩短为 100 毫秒。
- 更新了
UiDevice#wakeUp
和UiDevice#sleep
,以使用KEYCODE_WAKEUP
和KEYCODE_SLEEP
来支持替换电源按钮的设备。 - 添加了
UiObject2#getDisplayId
,并且支持在多个显示屏中查找和管理对象。 - 添加了
UiObject#click
和UiObject2#clickAndWait
方法,以完成基于坐标的点击操作。
bug 修复
- 修复了以下问题:显示尺寸计算偶尔不正确并且可能会忽略屏幕的某些部分,尤其是在多窗口模式下 (Ifc016c)。
- 修复了
UiDevice#takeScreenshot
中的屏幕截图缩放问题 (Id80ad6)。 - 提高了
Until.scrollFinished
和UiObject2#scroll
的可靠性 (I7b0595)。 - 修复了严格模式
IncorrectContextUseViolation
警告 (Iffa6a0)。