在Appium基础学习之 | Bootstrap源码分析中留下了一个尾巴就是Bootstrap如何转化代码到UiAutomator执行,想了想觉得有必要先把UiAutomator使用简单了解下,于是有了本文(归于UiAutomator,现在最新版的UiAutomator2后续再讲,路需要一步步走)。
Android团队在4.1版本(API 16)中推出了一款全新的UI自动化测试工具UiAutomator。并且还提供一款图形界面工具扫描和分析应用UI控件的UiAutomatorViewer辅助自动化测试控件定位。
一、UiAutomator概述
1.UiAutomator支持环境
(1)Android SDK Tool必须支持21版本以上
(2)Android SDK Platform工具包16版本以上
2.UiAutomator主要的几个API
(1)UiDevice
用于访问与操作设备,包括访问设备的分辨率、屏幕大小等信息;也可以操作设备的菜单、返回、Home键、点击事件等等。
(2)UiSelector
用于根据条件查找并定位界面上的控件。从Appium的角度上来讲,它就如同定位。UiSelector提供了很多方法(条件)来查找定位界面上的控件,如text、desc、id、className等等方法,与Appium上各种定位方法呼应,这也是2个工具能相辅相成的结果。
(3)UiObject
表示控件,它由UiSelector查找定位得到;控件也提供了很多方法操作它,如点击、得到控件信息、检查控件状态等等。
(4)UiCollection
表示控件集合。
(5)UiScrollable
可操作滑动控件,支持水平滑动、垂直滑动。
具体参考博文:http://blog.chengyunfeng.com/?p=504#ixzz3wTKp7qhe
二、UiAutomator执行环境
1.Eclipse环境
继续使用Appium环境搭建中IDE集成的Eclipse
(1)新建Java Project项目,项目名自定义,文中用TestUiAutomator
(2)引入Junit库
选择Add Library,弹出对话框选择Junit
点击Next进入下一步
选择Junit版本,Eclipse默认会安装Junit插件版本,高版本的Eclipse会安装Junit4,如果选择Junit版本而Eclipse并没有会提示报错。如上选择的是Junit4版本,点击Finish按钮即可。(UiAutomator最低支持Junit3,而UiAutomator2最低支持Junit4,Junit4使用的注解来表示One Test)
(3)引入UiAutomator相关jar包
在Android SDK集成工具包中platforms目录下是不同Android API的工具包,在这些包下都能找到2个jar,分别是Android.jar与UiAutomator.jar包,如下图。这两个jar是UiAutomator需要的,但是需要注意,建议引入API 18版本及以上,因为API 18的这两个jar支持id定位,低于18版本是不支持id定位的。
引包过程就免了,引入2个jar后如下:
(4)新建Package:com.test
输入包名点击Finish完成,包名可自定义。
(5)新建类TestRunner,代码如下
public class TestRunner extends UiAutomatorTestCase{
public void testOne() throws UiObjectNotFoundException{
try {
//唤醒屏幕
getUiDevice().wakeUp();
//进入操作前,先用Home键进入待机界面
getUiDevice().pressHome();
//启动应用
Runtime.getRuntime().exec("am start com.main/com.main.MainActivity");
sleep(3000);
//点击
UiObject clickObject = new UiObject(new UiSelector().resourceId("com.main:id/android_tab"));
clickObject.click();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
这里需要注意点是使用UiAutomator1.0版本,它默认使用的是Junit3.0执行,所以需要继承UiAutomatorTestCase,方法中也必须以test开头命名。
2.Ant环境
下载地址:https://ant.apache.org/bindownload.cgi
下载zip版本解压,然后把解压文件夹下bin目录的地址配置到环境变量,cmd验证可以输出版本号即可
3.Android环境
在Appium环境部署中已配置好
三、UiAutomator执行
1.获取SDK ID
先进入项目所在路径,输入android list命令,得到SDK ID(注意需要API大于15)
2.创建build文件
命令:android create uitest-project -n
-n表示UiAutomator接下来要执行的使用的名字
-t表示SDK ID
-p表示Eclipse上创建项目的名字,如果没有进入项目目录,则需要输入整个目录加上项目名
执行命令后在项目下会生成一个build.xml文件
3.构建jar包
进入build.xml文件目录,输入命令:ant build,地址构建出jar包
构建完成后在项目bin目录下多了个jar包,这个jar的名字是上面创建build.xml文件命令-n所命名的。
4.推送jar包到设备
命令:adb -s
-s表示指定目标机器,在前面也使用过
5.执行
命令:adb -s