描述:UiAutomator接口丰富易用,可以支持所有Android事件操作,事件操作不依赖于控件坐标,可以通过断言和截图验证正确性,非常适合做UI测试。 UIAutomator不需要测试人员了解代码实现细节,属于功能和黑盒测试。测试代码结构简单,编写容易,学习曲线低。基于JAVA,一次编译可以运行于所有Android设备。

使用限制:uiautomator是一个包含一套UI测试API,和支持运行测试程序的JAR包。该JAR包位于sdk/platforms/android-*/uiautomator.jar. 使用时需要注意自己的SDK版本需要大于16, SDK Tools版本需要大于21.

Uiautomator使用步骤:

1、 在Eclipse中,新建java项目“CalculatorAutoTest”;

2、 右键java项目->构建路径->配置构建路径->库->添加库->选择JUnit,下一步->选择Junit4->完成;

3、 添加必要的Jar包:右键java项目->构建路径->配置构建路径->添加外部JAR->选择sdk/platforms/android-*/目录下的uiautomator.jar和android.jar,路径中的*请使用自己以下载的最新版本;

4、 在java项目中新建类CalTest继承UiAutomatorTestCase;

代码:目前用于项目的自动化测试代码。

//进行自动化测试
publicvoid testDemo() throws UiObjectNotFoundException{
// UiScrollable appview = new UiScrollable (new UiSelector().className("android.view.View").instance(0));
// UiObject openapp = appview.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()) , "Biohop");
// openapp.clickAndWaitForNewWindow();
while(true){
UiObject TestLinearlayout=new UiObject(new
UiSelector().resourceId("com.android.test:id/mainTesting"));
TestLinearlayout.click();
sleep(1000);
UiObject TestingToNamelayout=new UiObject(new UiSelector().resourceId("com.android.test:id/testingToName_go_linearLayout"));
TestingToNamelayout.click();
sleep(1000);
UiObject QRlayout=new UiObject(new UiSelector().resourceId("com.android. test:id/DataMatrixSure_linearlayout"));
QRlayout.click();
sleep(28000);
UiObject TestResultlayout=new UiObject(new UiSelector().resourceId("com.android. test:id/testingTimeCountSure_Linearlayout"));
TestResultlayout.click();
sleep(1000);
UiObject TestResultDialog=new UiObject(new UiSelector().resourceId("com.android.test:id/systemSetDialog_close"));
TestResultDialog.click();
sleep(1000);
}
}

5、 进入cmd命令行管理器:进入sdk/tools所在的目录,键入

-> d:

-> cd Android\android-sdk-windows\tools

6、 查看当前sdk中,sdk的所有版本信息,在tools目录下,键入:

-> android list target

7、 目的是为了知道相应版本的id号,同时不仅仅UIAutomator需要sdk4.1或以上版本的支持,同时如果你需要通过UI控件的id进行UI识别,那么所选择的sdk,需要API Level 18以上的版本,所以这里我选择了id=7的sdk版本。

8、 创建打包测试代码的Build脚本。通过如下命令来生成Build脚本:

<android-sdk>/tools/android create uitest-project -n <name> -t 1 -p <path>

其中:<name>是包含测试代码的项目名称,<path>是包含测试代码的项目文件路径。-t后面的1是Android sdk版本id。在cmd中键入:

-> android create uitest-project -n CalculatorAutoTest -t 7 -p D:\workspace\CalculatorAutoTest

9、 在命令行中,进入CalculatorAutoTest项目所在文件夹,并使用ant工具对build.xml进行编译,另ant编译工具需要自行安装和配置环境变量

-> ant build

10、下面还需要将这个jar文件拷贝到手机的 /data/local/tmp/ 目录中,拷贝操作可以通过一下命令实现:

-> adbpush D:/workspace/CalculatorAutoTest/bin/CalculatorAutoTest.jar  /data/local/tmp/

11、 最后运行jar文件:下面“CalTest”为类CalTest,有包名的要将包名也写上

-> adb shell uiautomator runtest CalculatorAutoTest.jar -c CalTest

\

12、uiautomator代码解析网站:http://techgogogo.com/2015/01/uiautomator%E5%AE%9A%E4%BD%8Dandroid%E6%8E%A7%E4%BB%B6%E7%9A%84%E6%96%B9%E6%B3%95%E5%AE%9E%E8%B7%B5%E5%92%8C%E5%BB%BA%E8%AE%AEappium%E5%A7%8A%E5%A6%B9%E7%AF%87/

配置参考网站:http://www.it165.net/pro/html/201409/22071.html

13、使用命令:adb shell uiautomator runtest CalculatorAutoTest.jar -c CalTest对程序进行测试,必须要将USB连接上电脑测试程序才能运行。断开USB连接,测试也能够运行的方法:使用命令:adb shell uiautomator runtest CalculatorAutoTest.jar--nohup -c CalTest

最新文章

  1. C#多线程--信号量(Semaphore)
  2. android oauth 微博客户端 架构一
  3. 利用JBoss漏洞拿webshell方法
  4. Linux From Scratch [1]
  5. [Javascript] Adding Shapes to Maps with Leaflet and GeoJSON
  6. a标签中调用js的几种方法
  7. XML 树结构
  8. sql语句实现累计数
  9. ubuntu集群下ssh配置总结
  10. 转 Master-Worker模式 并行程序设计模式--Master-Worker模式
  11. meson 中调用shell script
  12. spring中的IOC/DI的知识点
  13. fastcgi_param解释
  14. 循环链表的实现与操作(C语言实现)
  15. &ldquo;互联网+&rdquo;背景下使用微信公众号增强班主任工作与整合教学资源(泰微课)
  16. JS学习笔记(5)--一道返回整数数组的面试题(经验之谈)
  17. python初步学习-python控制流
  18. 第九章 整合Mybatis(待续)
  19. 未启用当前数据库的 SQL Server Service Broker,请为此数据库启用 Service Broker
  20. 输入框获取焦点后placeholder文字消失、修改placeholder的样式

热门文章

  1. Selenium IDE安装及简介
  2. 【2019HDU多校】第九场1006/HDU6685-Rikka with Coin——位运算打表
  3. 数学-概率-New 21 Game
  4. JUnit 5基础指南
  5. 强化学习之三点五:上下文赌博机(Contextual Bandits)
  6. Data Management and Data Management Tools
  7. 使用Python中的NLTK和spaCy删除停用词与文本标准化
  8. 如何利用python实现为每行添加行数编号
  9. 模块 psutil 系统信息获取
  10. Selenium系列(21) - Cookie操作和源码解读