测试 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 包含这些提交。
新功能
- 新
Uiautomator
API 的初始形态。UiAutomatorTestScope
可以通过工厂uiAutomator
创建,从而访问新的onView
API。 - 初始 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)。 - 更新了
UiObject2
MotionEvent
之间的延迟为显示刷新率的两倍,以更好地模拟用户手势(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)。