优点:1.可以对所有操作进行自动化,操作简单;

  2.不需要对被测程序进行重签名,且,可以测试所有设备上的程序,比如~某APP,比如~拨号,比如~发信息等等

     3.对于控件定位,要比robotium简单一点点

缺点:1.uiautomator需要android level 16以上才可以使用,因为在level 16及以上的API里面才带有uiautomator工具

  2.如果想要使用resource-id定位控件,则需要level 18及以上才可以

     3.对中文支持不好(不代表不支持,第三方jar可以实现)

     4.个人感觉,控件定位不如robotium那样层级分明,仅仅个人感觉,用户行为注入还是和插桩有点点区别的

第一步、环境准备:

1.JDK1.8(1.7我试验了果断不好使,一点不惯病)

2.eclispse(IDE尊崇个人意愿)

3.android SDK以及配置

4.ANT(主要用于build我们的脚本,生成jar包)

ant的搭建主要分几步:1.下载ant安装文件并且解压安装;

2.新建系统环境变量ANT_HOME,参数值是你的ant安装目录;

3.在Path环境变量中添加ant安装目录的bin文件夹,比如我的就是C:\cod\apache-ant-1.9.6\bin

4.配置完以后,测试一下,在命令行下输入ant -version,如果显示你所安装的ant版本信息,证明环境变量配置成功

第二步、建立我们的测试工程:

一、建立Java Project(普通Java项目)

二、添加依赖jar

对应安卓版本的jar,如我的是android-18

  android.jar
  uiautomator.jar

三、在测试工程src文件夹中add package,然后添加一个class文件,

随便写一个测试类:

如下:

package com.uiautomator.www;
import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiSelector;
/**
* 测试点击HOME键,启动51CTO应用
*/
import com.android.uiautomator.testrunner.UiAutomatorTestCase; /**
*
* @author Administrator
*
*
*/
public class Demo extends UiAutomatorTestCase{ public void testDemo() throws Exception{
UiDevice device = UiDevice.getInstance();
if (device.isScreenOn()) {
device.wakeUp();
}
UiObject object = new UiObject(new UiSelector().text("51CTO学院"));
object.click();
}
}

四、查看当前查看对应android版本的SDK的ID值

android list target

五、创建测试:

运行命令:android create uitest-project -n <name> -t <android-sdk-ID> -p <project_path>
比如:

android create uitest-project -n AutoRunner -t  -p F:\workspace\DemoTest

说明:

上面的name就是将来生成的jar包的名字,可以自己定义;android-sdk-ID就是上面看到的对应android版本的SDK id;path是Eclipse里刚才建立的测试工程的路径;运行命令后,将会在工程的根目录下生成build.xml文件。如果没生成,检查上面的步骤。

六、j编译生成jar

CMD进入测试工程目录,然后运行ant build,将使用ant编译生成jar,成功将会提示:

成功后,会在工程bin目录下生成对应名称的jar包

七、将jar包push到手机data/local/tmp目录下,

对应的命令是:adb push <jar文件路径> data/local/tmp

adb push AutoRunner.jar /data/local/tmp

八、运行测试:

然后使用命令行启动我们已经push进去的uiautomator脚本

adb shell uiautomator runtest <jar文件名> -c <工程中的类名(包含包名)>

adb push AutoRunner.jar /data/local/tmp

例:

adb shell uiautomator runtest AutoRunner.jar -c com.uiautomator.www.Demo

完成这一步后,手机会执行uiautomator脚本并且开始进行操作

Uiautomator之入门的更多相关文章

  1. Android 自己的自动化测试(4)&lt;uiautomator&gt;

    在前面的系列文章.我与介绍java实现 Android 自己主动化測试(1)怎样安装和卸载一个应用(java).Android 自己主动化測试(2)依据ID查找对象(java):然后又介绍了用pyth ...

  2. UiAutomator2.0入门

    总是听说UiAutomator这个框架,但从来没有使用过.找了篇入门,实践一下.实践之后感觉,uiautomator写测试代码,还是有点费劲.接口名比较多,比较长.网易的atx里使用的uiautoma ...

  3. Appium的入门使用

    ps:有没有人和我一样觉得Appium官方文档写的很烂的, 这官方文档,还不如很多人写的博客详细,而且对于初学的入门者实在是不够友好, 官网:https://github.com/appium/jav ...

  4. 自动化测试 | UI Automator 入门指南

    自动化测试的定义,这里先引用一段维基百科的定义: 在软件测试中,测试自动化(英语:Test automation)是一种测试方法,使用特定的软件,去控制测试流程,并比较实际的结果与预期结果之间的差异. ...

  5. 移动端自动化测试Appium 从入门到项目实战Python版☝☝☝

    移动端自动化测试Appium 从入门到项目实战Python版 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌)  说到APP自动化测试,Appium可是说是非常流 ...

  6. Python自动化测试入门科技树

    Python基础: 入门语法和数据类型: 编码环境安装基本语法 常用数据类型 常用运算符 Llist.Tuple.Dict.if&for.while Python进阶: 函数: 语法 内置函数 ...

  7. appium快速入门

    appium快速入门 演示官方demo 第一步:启动安卓模拟器 步骤2:启动Appium桌面 step3:准备自动化脚本与待测APK step4:运行测试代码 分析演示 分析Appium的加载流程 使 ...

  8. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  9. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

随机推荐

  1. 百度地图API 循环向 marker 添加 click事件

    使用百度地图API,循环向marker添加InfoWindow时,所有的marker点击弹出的inforwindow为最后一个添加的infowindow,百度后,使用js闭包解决此问题,直接贴代码: ...

  2. array_values

    $a = array( "Name" => "Peter", ", "Country" => "USA&qu ...

  3. Junit测试的理解------java基础知识

    前言:不知道是最近懒了,还不不想认真写博客,其实写一个质量高的博客是需要时间的,没办法时间太紧了 package com.mon11.day13.linkedlist; import static o ...

  4. vue2.0 之文本渲染-v-html、v-text

    vue2.0 之文本渲染-v-html.v-text 1.index.html代码 <!DOCTYPE html> <html> <head> <meta c ...

  5. 数据分析工具urule

    Python统计学书籍 https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-13911786811.22.6431353b4F5iw1& ...

  6. P2034 选择数字

    P2034 选择数字 题目描述 给定一行n个非负整数a[1]..a[n].现在你可以选择其中若干个数,但不能有超过k个连续的数字被选择.你的任务是使得选出的数字的和最大. 错误日志: longlong ...

  7. PHP--traits

    从PHP5.4.0起,PHP实现了代码复用的一个方法,称为traits. traits试图用来解决像PHP这样的面向对象语言中只支持单继承的问题.它的作用是允许我们在不使用继承的情况下为一个类增加功能 ...

  8. css3实现水平、垂直居中

    水平居中的方法: 1.父级text-align:center; .parent{ text-align: center; } .child{ display: inline-block; } 2.ta ...

  9. SQL Server进阶(一)T-SQL查询和编程的背景

  10. Winform程序双向绑定

    程序比较简单,一看就明白,主要需要实现INotifyPropertyChanged using System; using System.Collections.Generic; using Syst ...