一 、什么是 Uiautomator?
Ui Automator 是一个 UI 测试框架,适用于整个系统上以及多个应用间的跨应用功能 UI测试。
Uiautomator 测试框架提供了一组 API,用户构建在用户应用和系统应用上执行交互的界面测试。通过这些 API,可以在测试设备中执行用户操作,如滑动,点击,返回等。Uiautomator 测试框架非常适合黑盒式自动化测试。
注意:Uiautomator 框架需要 Android 4.3(API 级别 18)或更高版本
二、Uiautomator 2.0和1.0的区别
Uiautomator 目前分为1.0和2.0两个版本,2.0丰富了一些 API,以及修补了一些缺陷(例如不支持中文)
两者的主要区别如下:
- 2.0 基于 Junit4,测试用例无需继承任何父类,方法名没有限制,使用注解进行,1.0 基于 Junit3,即需要继承 UiAutomatorTestCase,测试方法需要以 test 开头
- 构建方式不同,2.0采用 gradle 进行构建,1.0 使用 Maven 或 Ant
- 2.0新增 UiObject2,Until,By,BySelector等 API
- 日志输出不同,2.0默认输出到 Logcat,1.0 可以使用 System.out.println输出流回显至控制台
- 2.0 注入到设备上是以 apk,1.0 输出为 jar
- 2.0 基于 Instrumentation,可以获取应用 Context,可以使用 Android 服务及接口
三、Uiautomator 2.0核心类
- UiDevice:代表设备状态,如屏幕的大小、旋转方向、按压各种按键等;
- UiObject2:安卓组件对象,提供了元素的属性获取和元素的各种操作;
- BySelector:按照一定的条件(例如控件的text值,资源id),定位界面上的元素;
- UiWatcher:用于处理测试中出现的“意外打断”情况,例如弹窗;