怎样搭建UiAutomator 1.0 环境

2017-01-14 10:01:44来源:http://www.jianshu.com/p/c39a4d805766作者:Moriarty_0822人点击

1. 准备工作

有一些准备工作要做,这边我用的是:
Eclipse,Ant,Android。
安装的话会需要一些步骤,而且,在我们使用Eclipse之前,需要使用到JDK。
a. 如何安装Eclipse的相关文档。
b. 如何安装JDK的相关文档。
c. 如何安装Ant的相关文档。
d. 如何安装Android SDK的相关文档。
安装这些软件,我们是很需要有耐心的,特别是当需要添加或者修改环境变量时。然而也不是太复杂,我们只需要根据提示一步一步来就行了。
如果上面的链接失效的话,我们可以自己去网上搜索一下。


2. 创建一个JUnit test case

准备工作完成后,我们可以开始创建一个项目了,点击“File-new Java project”,为项目起一个你喜欢的名字,比如说“ExoSuperSpeed”。
下一步点击“next-Libraries-add external JARs”,
我们要选择“android.jar”和“uiautomator.jar”。
选择合适的版本,记住版本号。再点击“Add library”,选择“JUnit4”,点击“Finish”,创建完项目。
之后创建一个包,在包的下面创建一个“JUnit Test case”,起好名字。因为一些版本的原因,我会把Java代码中的“import org.junit.Test”和“@Test”删除掉。


3. 写代码

现在可以开始写代码了,但是有两点要注意:
第一点 你的主类必须继承自“UiAutomatorTestCase”。
第二点 你的主要测试部分起名字必须以“test”开头。
在“Android/sdk/tools”中你可以找到“uiautomator.bat”,可以帮助定位界面元素。


4. 创建build.xml文件

在Android目录下的文件夹里面找到tools,路径类似于“C:/USERS/XXX/Android/sdk/tools”,打开一个cmd窗口,输入命令“cd C:/USERS/XXX/Android/sdk/tools”。成功切换目录之后,输入命令“android list”可以的到一个列表。之后的一个命令是“android create uitest-project -n XXX -t XXX -p XXX”。

-n 后面,可以给之后将要得到的.jar文件命名;
-t 后面,选择合适的id来匹配“android.jar”和“uiautomator.jar”的版本;
-p 后面,输入当前项目所在的路径。
比如说,该命令可能会类似于
android create uitest-project -n ExoPlay01 -t 1 -p C:/Users/XXX/workspace/ExoSuperSpeed”。输入命令之后等待几秒,可以看到“Add file build.xml”即为成功。


5. 生成.jar文件

通过ant我们将把build.xml文件转换成.jar文件。刷新项目,在JUnit4目录下可以看到build.xml。右键点击该文件,选择“Run as-Ant build”,取消“help XXX”的勾选,选择“build XXX”,运行。
等待几秒,可以看到“BUILD SUCCESSFUL”,以及
“[jar] Building jar : C:/User/XXX/workspace/ExoSuperSpeed/bin/ExoPlay01.jar”


6. 移到待测设备

我们可以使用命令“adb push”来把.jar文件移动到待测设备中。该命令类似于
adb push C:/User/XXX/workspace/ExoSuperSpeed/bin/ExoPlay01.jar /data/”。
等待查看是否文件移动成功。


7. 测试

做了这么多工作,终于到测试步骤了。在控制台输入命令类似于
uiautomator runtest /data/ExoPlay01.jar”。
等待查看测试结果。


8. 注意事项

在这些步骤中,有一些是要留意的。
a. 确保安装的安卓软件和安卓设备互相支持,即是,没有版本纠纷;
b. 确保不要忘记添加“android.jar”,“uiautomator.jar”和“JUnit4”;
c. 在我们写代码之前,确保创建的是“JUnit test case”;
d. 主测试中,取名要以“test”开头,这样的话才会被识别为是一个测试;
e. 当我们使用adb push但是得到提示“permission denied”,可能是因为权限引起的。我们可以尝试把文件移动到另外一个目录或者做“adb root”之后重新移动文件。


顺便提一下,我会把我简单的小代码放在后面。我在尝试着通过android studio做uiautomator 2.0,会需要点时间。


也是刚开始尝试做这些的,如果说你们能从中得到点什么或者愿意帮我改进点什么,我会很感激的。


 package com.mv.superspeed;
import java.io.IOException;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiScrollable;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class SuperSpeed extends UiAutomatorTestCase{
public void test() throws InterruptedException, IOException {
String ShellCommand_RunExo = "am start -W "
+ "com.google.android.exoplayer.demo/.SampleChooserActivity";
Runtime.getRuntime().exec(ShellCommand_RunExo).waitFor();
System.out.println("start the app");
UiScrollable ExoPlayerDemo = new UiScrollable(new UiSelector()
.scrollable(true));
ExoPlayerDemo.setAsVerticalList();
UiObject SuperSpeedPlayReady = new UiObject(new UiSelector()
.text("Super speed (PlayReady)"));
try {
ExoPlayerDemo.scrollIntoView(SuperSpeedPlayReady);
System.out.println("scroll until the sight of the exact button");
} catch (UiObjectNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(SuperSpeedPlayReady.exists()){
try {
SuperSpeedPlayReady.click();
} catch (UiObjectNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("Cannot locate SuperSpeedPlayReady");
}
}
}



最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台