AndroidAndroid开发Android知识

怎样搭建UiAutomator 1.0 环境

2016-08-23  本文已影响377人  JaedenKil

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");
    }
  }
}
上一篇下一篇

猜你喜欢

热点阅读