目录

Android官方的uiautomator例子的实现

目录

Android的自动化测试有很多框架,其中uiautomator是google官方提供的黑盒UI相关的自动化测试工具,case使用java写,今天实践了一下官方文档中样例程序,其中还是有一些小问题需要总结一下的。 前几天试着使用uiautoamtor在真实的项目中写了一个简单的测试 使用Uiautomator做基于UI界面的测试

使用ADT创建一个java的项目

在创建项目的时候要加上JUnit与你使用的Android platforms中对应的android.jar与uiautomator.jar

/image/2014/12/image16.png
image

新建一个包(我这里就只叫com)

再这个包下创建一个class

输入以下java代码,代码全是官方文档上的代码,除了最上面的package

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package com;

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 Runer extends UiAutomatorTestCase {

  public void testDemo() throws UiObjectNotFoundException {

     // Simulate a short press on the HOME button.
     getUiDevice().pressHome();

     // We’re now in the home screen. Next, we want to simulate
     // a user bringing up the All Apps screen.
     // If you use the uiautomatorviewer tool to capture a snapshot
     // of the Home screen, notice that the All Apps button’s
     // content-description property has the value “Apps”.  We can
     // use this property to create a UiSelector to find the button.
     UiObject allAppsButton = new UiObject(new UiSelector()
        .description("Apps"));

     // Simulate a click to bring up the All Apps screen.
     allAppsButton.clickAndWaitForNewWindow();

     // In the All Apps screen, the Settings app is located in
     // the Apps tab. To simulate the user bringing up the Apps tab,
     // we create a UiSelector to find a tab with the text
     // label “Apps”.
     UiObject appsTab = new UiObject(new UiSelector()
        .text("Apps"));

     // Simulate a click to enter the Apps tab.
     appsTab.click();

     // Next, in the apps tabs, we can simulate a user swiping until
     // they come to the Settings app icon.  Since the container view
     // is scrollable, we can use a UiScrollable object.
     UiScrollable appViews = new UiScrollable(new UiSelector()
        .scrollable(true));

     // Set the swiping mode to horizontal (the default is vertical)
     appViews.setAsHorizontalList();

     // Create a UiSelector to find the Settings app and simulate
     // a user click to launch the app.
     UiObject settingsApp = appViews.getChildByText(new UiSelector()
        .className(android.widget.TextView.class.getName()),
        "Settings");
     settingsApp.clickAndWaitForNewWindow();

     // Validate that the package name is the expected one
     UiObject settingsValidation = new UiObject(new UiSelector()
        .packageName("com.android.settings"));
     assertTrue("Unable to detect Settings",
        settingsValidation.exists());
     UiObject reportBug = new UiObject(new UiSelector().text("Sound"));
     reportBug.clickAndWaitForNewWindow();
     UiObject soundValidation = new UiObject(new UiSelector()
     .text("Volumes"));
  assertTrue("Unable to detect Sound",
  soundValidation.exists());

     getUiDevice().pressHome();

 }

使用ant工具生成build.xml

我这里在使用ADT自已的ant插件时提示

  Class not found: javac1.8  

网上查了查,是插件与我java环境不符,下载最新的ant插件就可以了 http://ant.apache.org/bindownload.cgi

/image/2014/12/image17.png
image
下载这个tar.gz包,解压,然后将apache-ant-1.9.4bin目录添加到环境变量PATH中 然后cmd到android sdk的tools目录,使用andrlid list命令,记住你将要在模拟器中运行的(也是你刚刚导入android.jar与uiautomator.jar包时所在的platforms)
/image/2014/12/image18.png
image
在cmd下使用android create uitest-project -n -t -p -n 为生成的jar包名称,自已任意定义, -t 为上面查看到的值,我这里是1 -p 为输出路径,这里就是刚才创建的java项目所在的路径 android create uitest-project -n AutoRunner -t 1 -p D:myAndroidStudyandroidTest 然后再cmd进入D:myAndroidStudyandroidTest,使用ant build命令生成AutoRunner.jar文件

将这个AutoRunner.jar文件push到模拟器中

adb push AutoRunner.jar /data/local/tmp

使用adb shell uiautomator runtest AutoRunner.jar –c com.Runer 使Runer类运行

/image/2014/12/image19.png
image
我的代码里又在官方基础上多了一个点击”sound”的操作与点击Home键操作

1
2
3
4
5
6
UiObject reportBug = new UiObject(new UiSelector().text("Sound"));
      reportBug.clickAndWaitForNewWindow();
      UiObject soundValidation = new UiObject(new UiSelector()
      .text("Volumes"));
   assertTrue("Unable to detect Sound",
   soundValidation.exists());
  • 文章标题: Android官方的uiautomator例子的实现
  • 本文作者: 杨彦星
  • 本文链接: https://www.yangyanxing.com/article/1264.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。