UiAutomator 测试
最新更新 | 稳定版 | 候选版 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2024年6月26日 | 2.3.0 | - | - | 2.4.0-alpha01 |
声明依赖项
要添加对测试的依赖项,必须将 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#getKeyInjectionDelay
和setKeyInjectionDelay
,因为现在文本始终直接注入,而不是通过按键注入,因此该参数未使用。(I3bcc5)。
错误修复
- 更新了
UiObject2
运动事件之间的延迟,以考虑动态刷新率(即流畅显示)(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,则可能出现空指针异常的问题(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
中空节点可能导致空指针异常的问题(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
以支持同时按下多个按键,例如同时按下电源键和音量减键以截屏(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
手势更流畅。 - 将等待时的轮询间隔从 1000ms 减少到 100ms。
- 更新了
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)。