UIAutomator 2
尽管 API 大部分依然相同,但是内部实现已经改变了。我们来看 UIObject2 的介绍:
UIObject2
不同于 UiObject,UIElement 被绑定到一个特殊的 view 实例上,并且在底层 view 对象被销毁后变成过期的。因此,如果 UI 发生的显著变化时,可能就必须去调用 findObject(BySelector) 以获得一个新的 UiObject2 实例。
构建系统
UIAutomator 2利用了Gradle作为构建系统的能力。之前的UIAutomator使用Maven/Ant。
测试产出(Assets)
现在生成的测试包是APK。之前UIAutomator生成.jar或.zip文件。这让 UIAutomator 2 能完整地使用 Android instrumentation 的能力。
ADB
ADB 对 UIAutomator 2 的处理有轻微的不同。
老版本的 UiAutomator 作为一个 shell 程序运行:
adb shell uiautomator runtest ...
UiAutomator 2 是基于 Android Instrumentation 的。测试被编译进APK里,并且在应用进程里运行:
adb shell am instrument ...
本文由 NativeZhang 翻译,由 lihuazhang 校验。