UIAutomator1.0入门

一.什么是UIAutomator?

UIAutomator是一款Android自动化测试框架,注入原生事件进行模拟用户操作。

优点:支持跨应用操作,不需要对被测应用重新签名,可方便地对事件进行操作与监控,易扩展易上手等。

缺点:SDK16(Android4.1)及其以上才能使用,resourceId控件的获取需要SDK18(Android4.3)以上,对中文的支持较差等。

 

二.UI2.0与UI1.0的区别

(1)2.0基于 Instrumentation, 可以获取应用Context,可以使用Android服务及接口。 

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

(3)2.0采用Gradle进行构建,1.0使用Maven或Ant。 

(4)2.0新增UiObject2、Until、By、BySelector等接口。 

(5)2.0输出到Logcat,1.0可以使用System.out.print输出到控制台。 

(6)2.0输出为APK,1.0输出为JAR。

 

二.开发环境搭建

JDK1.8

Eclipse(UI1.0)、Android studio(UI2.0)

Android sdk、

Ant(构建脚本,生成jar包)

 

三.新建测试工程

(1)使用eclipse或idea创建一个工程UIAutomtorPM,File->new ->Project,

(2)添加外部依赖库,android.jar、uiautomator.jar(使用sdk\platforms\android-20下的jar)

(3)添加junit4依赖库;

(4)在src目录下创建包名com.qwert.autotest.simcard,创建类名SimCardTest

代码如下:

 

package com.qwert.autotest.simcard.testcase;

 

import android.widget.ImageView;

import com.android.uiautomator.core.UiObject;

import com.android.uiautomator.core.UiObjectNotFoundException;

import com.android.uiautomator.core.UiSelector;

import com.android.uiautomator.testrunner.UiAutomatorTestCase;

 

public class SimCardTest extends UiAutomatorTestCase {

 

private UiObject airPlane = new UiObject(new UiSelector().description("Airplane mode"));

private UiObject airPlaneIcon = new UiObject(new UiSelector().description("Airplane mode.").className(ImageView.class));

 

@Override

protected void setUp() throws Exception {

super.setUp();

getUiDevice().pressHome();

}

 

public void testSwitchToNormalMode() {

// 打开快速设置,打开飞行模式

getUiDevice().openQuickSettings();

setAirplaneMode(true);

 

// 由飞行模式切换到普通模式

setAirplaneMode(false);

// 验证是否切换成功

assertFalse("close airplane fail", airPlaneIcon.exists());

}

 

public void testSwitchToAirplaneMode() {

// 打开快速设置,打开飞行模式,验证是否打开成功

getUiDevice().openQuickSettings();

setAirplaneMode(true);

assertTrue("open airplane fail", airPlaneIcon.exists());

 

// 测试完成,取消飞行模式。恢复手机状态,避免影响后续用例执行。

setAirplaneMode(false);

}

 

public boolean isAirplaneModeEnabled() {

try {

return "On".equals(airPlane.getText());

} catch (UiObjectNotFoundException e) {

e.printStackTrace();

return false;

}

}

 

public boolean setAirplaneMode(boolean enabled) {

if (enabled == isAirplaneModeEnabled()) {

return true;

}

try {

airPlane.click();

} catch (UiObjectNotFoundException e) {

e.printStackTrace();

}

return enabled == isAirplaneModeEnabled();

}

 

@Override

protected void tearDown() throws Exception {

super.tearDown();

}

 

}

 

注:使用ant构建build文件会报错,所以把Java代码中的“import org.junit.Test”和“@Test”删除。

 

四.生成build.xml并构建jar包

1.创建build文件

(1)找到sdk/tools目录,使用cmd命令 打开tools目录;

(2)输入命令 android list target,查看使用android.jar的id值,比如是3

(3)执行如下命令,生成xml文件

android create uitest-project -n UIAutomatorPM -t 3 -p F:\IdeaProjects\UIAutomatorPM

 

-n 后面,将要生成的用例jar文件名称;

-t 后面,选择合适的id来匹配“android.jar”和“uiautomator.jar”的版本;

-p 后面,当前项目所在的路径。

 

命令执行成功后,可看到build.xml文件在项目根目录生成。

注:

android studio使用的sdk版本过高的话,eclipse或idea无法构建jar包,可下载低版本的sdk tools替换android studio sdk的tools目录。

或者安装两套sdk,设置tools目录的临时环境变量。set path=D:\eclipse_sdk\tools;%path%

 

2.生成jar包

法一:在工程根目录执行命令:ant build

法二:eclipse可修改build.xml文件的default="help"属性为default="build", 鼠标右键点击该文件,Run As -> 1.Ant Build

看到“BUILD SUCCESSFUL”输入后,可到项目的bin目录下查找生成的UIAutomatorPM.jar文件

 

五.执行测试

(1)将jar包push到手机data/local/tmp目录下

adb push data/local/tmp

adb push F:\IdeaProjects\UIAutomatorPM\bin\UIAutomatorPM.jar /data/local/tmp

(2)运行用例

adb shell uiautomator runtest -c <工程中的类名(包含包名)#方法名>

adb shell uiautomator runtest /data/local/tmp/UIAutomatorPM.jar -c com.qwert.autotest.simcard.testcase.SimCardTest

等待查看测试结果。


 

 

你可能感兴趣的:(UiAutomator1.0)