Uiautomator2.0

2022-06-13 18:47:59 浏览数 (1)

简介

Google Android Developers 在2015年3月就发布了UiAutomator 2.0版本。

重大特性

1.U2 基于 Instrumentation,使用Instrumentation test runner即可运行UiAutomator,反之,也即在基于Instrumentation的test中也能使用UiAutomator; 可以获取应用Context,可以使用Android服务及接口。

2.Log日志输出变更。U1可以使用System.out.print输出流回显至执行端,而U2输出到Logcat。

3.Uiautomator1.0与2.0包名不一致 com.android.uiautomator.core. -> android.support.test.uiautomator。

4.基于 Junit4,测试用例无需继承于任何父类,方法名不限,使用Annotation进行; U1需要继承UiAutomatorTestCase,测试方法需要以test开头。

5.与U1的Maven或Ant构建方式不同,U2采用Gradle进行构建; U2输出为APK,Android工程,而U1为Java工程,输出jar包。

6.新增UiObject2、Until、By、BySelector等接口, 详细请参考官方文档。 其中,U2必须明确EditText框才能向里面输入文字,U1直接指定父类也可以在子类中输入文字。

<section>

</section>

启动命令变化<br style="box-sizing: border-box;"/>

注意事项

必须与被测应用签名一致,且系统安装被测应用的情况下执行测试用例。

获取参数

u2测试框架基于apk,拥有权限类似APP,无法执行dump等shell权限操作。

可以通过系统签名、root、

device.executeShellCommand(注意只支持API 21 )、Java守护进程方式执行。

在Android 4.4手机出现

NoClassDefFoundError问题,

Instrumentation

消息为

INSTRUMENTATION_RESULT: longMsg=java.lang.NoClassDefFoundError:

org.junit.runner.manipulation.Filter$1 解决: MultiDex手动拆包A ,

配置如下:<br style="box-sizing: border-box;"/>

uiautomator2.0 应用

使用AndroidStudio创建项目时会自动引入相关依赖等工作,新建工程只要在对应目录下编写测试用例即可执行。如需手动配置,操作步骤如下:

项目集成

配置gradle文件,引入依赖包

用例编写

在modle/src/androidTest/java/packageName下创建用例(新建应用会自动构建一条测试用例,可以直接运行,否则需要手动创建如上目录及用例文件)

用例执行

1、通过gradle project -> module-> tasks -> build -> assembleAndroidTest 构建Android测试apk,然后安装。

2、通过命令如下命令启动测试用例

Api UiDevice

1.UiDevice代表设备状态,为单例模式。

UiDevice的功能包括:

①获取设备信息:屏幕分辨率,旋转状态,亮灭屏状态等

②操作:案件,坐标操作,滑动,拖拽,灭屏唤醒屏幕,截图等

③监听器功能

2.UiDevice写法有两种,推荐第一种方式,第二种可能会引起某些问题而导致无法运行。

①UiDevice.getInstance().pressHome();

②getUiDevice().pressHome();

按键相关的API,常用的按键包括HOME,MENU,BACK,VOLUME_UP,VOLUME_DOWN,RecentApps,POWER等

0 人点赞