Android自动化之uiautomator(一)

一、uiautomator简介

Android SDK提供下述工具来支持自动化的功能界面测试:

1、uiautomatorviewer:扫描、分析待测应用的UI组件的图像工具。

2、uiautomator:包含创建定制功能界面测试API和自动化运行测试用例的引擎的JAVA类库。

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

缺点:Android版本需要高于4.0。

二、Uiautomator常用API了解

以下是uiautomator最基本最常用到的三个类,这里只是简单地介绍这三个类的作用,后续本人还会写相关随笔详细说明。

1、UiDevice:用于获取设备的各种状态。

获取设备信息:屏幕分辨率、选装状态、亮灭屏......

操作:按键、坐标操作、滑动、拖拽、截图......

监听器功能

2、UiSelector:通过组件的各种属性与节点关系定位组件。

涉及到的android基础:Android常用组件、Android组件的属性

3、UiObject:代表一个组件对象,对象有许多模拟实际操作手机的方法和属性。

文本的编辑

手势操作

获取子类

判断对象是否存在

......

三、使用uiautomator实现自动化

(一)环境搭建

1、配置java开发环境

(1)安装JDK

(2)配置环境变量

JAVA_HOME:jdk的安装目录

CLASSPATH:.%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

PATH:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

[验证配置是否成功]cmd:java -version

2、配置Android环境

(1)配置ANDROID_SDK_HOME环境变量

(2)配置PATH路径

ANDROID_SDK_HOME:android-SDK-windows的路径

PATH:.;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;

[验证配置是否成功]cmd:adb

3、配置ANT环境

(1)配置ANT_HOME环境变量

(2)配置PATH路径

ANT_HOME:C:\develop\apache-ant-1.9.4

Path: ;%ANT_HOME%\bin

[验证配置是否成功]cmd:ant -version

4、开发工具

eclipse(这里不要用android-studio哦,往下看就知道原因了。)

(二)创建测试用例

1、eclipse创建java工程,工程/libs/-->导入 android.jar和uiautomator.jar工具包,执行Build path操作将两个工具包导入Library。

说明:两个工具包所在路径:\sdk\platforms\android-20。

2、在工程中创建测试类,继承UiAutomatorTestCase类。

3、在类中创建测试方法(函数),这里一个测试方法一般就等同于我们待执行的一条测试用例,我们会在该测试方法中使用uiautomator的相关api来实现用例的自动化。

由于uiautomator使用的是Junit3标准,所以测试用例的方法名必须遵循Junit3的规则以test开头来命名。

e.g.

(三)编译和运行

1、执行步骤

开启cmd.exe执行以下命令,完成自动化代码的编译和运行。

(1)创建build文件

>cd <project-workspace-path>

>android create uitest-project -n <jars> -t 1 -p <workspace path>

【说明】

>:只是用来指代是cmd命令行

-n:指定当前工程最终发布的jar包名。

-t:编译使用的SDK版本在你PC中的targetId号,可通过android list命令查询。(这里有坑,一般移植代码时会踩到,不过踩踩记忆更深,后续会有随笔说明。)

<project-workspace-path>:当前工程的工作空间路径。可通过Eclipse/对工程右键/Properties/Resource/Location查看。

(2)修改build文件

进入工程对应的工作空间路径,打开build.xml文件,将第二行的help修改为build。

(3)运行build文件,开始编译,生成jar包

>ant -buildfile <build.xml文件路径>

【说明】

编译完成后,DOS窗口会输出编译信息:倒数第5行[jar]Building jar: C:\...\你指定的jar包名.jar。即生成了指定的jar包,在下一步中将该jar包导入手机运行测试用例。

(4)push文件(将打好的jar包传入手机)

>adb push <path_to_output_jar> /data/local/tmp/

(5)运行测试

>adb shell uiautomator runtest <jars> --nohup -c <包名.类名>#[test方法] -e <NAME> <VALUE>

【说明】

jars:即第(1)步中指定的<jars>。

-c:test方法所在的 包名.类名;可以使用多个-c,如 -c test1 -c test2 -c test3...来指定按照test1-->test2-->test3...顺序执行测试方法。

--nohup:指定此参数,可断开PC进行运行测试用例。

-e:传入一个键值对到测试程序中,可用于一些需要变化的参数的传入。(可省略该参数,后续补充其用法)

2、代码实现自动编译和运行

按照上述的执行步骤,是不是觉得要编译运行一次代码是一件很麻烦的事。Don’t worry,这里就介绍如何通过代码来实现自动编译和运行,解放双手不再手工执行命令。

(1)执行cmd命令

String cmd = “cmd /c +待执行的cmd命令”;

Process p = Runtime.getRuntime().exec(cmd); //没错,就是这么简单

(2)记录控制台输出的日志(日志是一个很重要的东西,比截屏记录现场更有用,给开发定位问题提供更直接的依据。)

InputStream input = p.getInputStream(); //获取Process的正确信息输出流

InputStream errorInput = p.getErrorString(); //获取Process的错误信息输出流

本文的目标:简单了解uiautomator,这里不多啰嗦那些概念性的东西。学会如何使用uiautomator执行自动化测试。

最后,本文写得较简单,后续有空会继续补充,好困,晚安~

时间: 2024-10-02 23:08:47

Android自动化之uiautomator(一)的相关文章

Android自动化测试之UIAutomator(三)---比对测试截图

系列回顾:本系列主要从开发的角度介绍UiAutomator的使用,总共包括三篇: 基础入门: Android自动化测试之UiAutomator(一) 技巧篇:     Android自动化测试之UiAutomator(二)(未完成) 比较工具篇 :Android自动化测试之UiAutomator(三)---比对测试截图 本文是第三篇. 转载请注明出处:http://blog.csdn.net/xzy2046/ 以下是正文: 1.简介: 本文适合所有以图片作为输出的自动化开发工具(不仅限于Andr

android app自动化测试之UIAutomator

一.UIAutomator Android自动化测试工具有很多,但是要免费.易上手,本人觉得就直接使用Eclipse自带的UIAutomator就不错.测试人员无需跟开发要代码信息,只要手机上有安装之后的APP自己就能做出自动测试用例,况且一通百通,就算是不满足于UI测试的,找个简单易上手的先明白原理,再深入了解其它复杂工具也会轻松很多.何乐而不为呢? UIAutomator是Eclipse自带的用于UI自动化测试工具,可仿真APP上的单击.滑动.输入文本等操作. 在使用之前,需要安装好java

【转】Android自动化测试(UiAutomator)简要介绍

一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?    简单的说,那些重复性的测试工作,都可以交给自动化完成:        1.设置手机的语言        2.添加.删除.收藏联系人        3.拨号.挂断        4.甚至发送短信.收藏短信 如果需要上面的功能,那么就开始自动化之旅吧. 二.Android自动化测试简单介绍 Androi

【金阳光测试】Android自动化 -- 学习历程:MonkeyRunner原理初步

章节:自动化基础篇——MonkeyRunner原理初步 网易云课堂: http://study.163.com/course/courseLearn.htm?courseId=712011#/learn/video?lessonId=877115&courseId=712011 主要讲解内容及笔记: 一.理论知识和脚本演示 最佳方式是上官网文档去查看monkeyrunner的介绍,官网上不去,就找了一个本地的android 4.2 的查看,基本内容没啥变化 First,什么是MonkeyRunn

Android自动化测试(UiAutomator)

一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?    简单的说,那些重复性的测试工作,都可以交给自动化完成:        1.设置手机的语言         2.添加.删除.收藏联系人         3.拨号.挂断         4.甚至发送短信.收藏短信 如果需要上面的功能,那么就开始自动化之旅吧. 二.Android自动化测试简单介绍 And

Android自动化性能收集

Android自动化性能收集 Android 功能测试自动化框架较多,UIAutomator,Robotium,Appium等.Case执行过程中,可能希望收集手机的性能指标,包括内存.cpu.流量等.使用java+shell+bat简单实现了android手机性能收集. 简述 过程很简单: 在启动自动化case前,执行收集信息的命令. 其实就是一些adb shell命令,如下: adb shell top -n 1| awk '{print $3" "$10}' >> c

Android自动化框架 模拟操作 模拟测试

转自:http://bbs2.c114.net/home.php?mod=space&uid=1025779&do=blog&id=5322 几种常见的Android自动化测试框架及其应用 随着Android应用得越来越广,越来越多的公司推出了自己移动应用测试平台.例如,百度的MTC.东软易测云.Testin云测试平台…….由于自己所在项目组就是做终端测试工具的,故抽空了解了下几种常见的基于UI层面的自动化测试工具.趁晚上有空总结下,好记心不如烂笔头呀! 一 常见Android自动

Android自动化框架

Android自动化框架 已有 2085 次阅读2014-8-26 12:19 | Android 几种常见的Android自动化测试框架及其应用 随着Android应用得越来越广,越来越多的公司推出了自己移动应用测试平台.例如,百度的MTC.东软易测云.Testin云测试平台…….由于自己所在项目组就是做终端测试工具的,故抽空了解了下几种常见的基于UI层面的自动化测试工具.趁晚上有空总结下,好记心不如烂笔头呀! 一 常见Android自动化测试框架及其应用 目前,Android基于UI层面的自

使用Monkeyrunner进行Android自动化的总结

使用Android自动化的方式,不仅可以用来对Android APP进行自动化测试,同样可以用来进行一些其他非常有意思的自动化任务.常用的自动化工具有Monkeyrunner, Robotium, Appium等.Monkeyrunner是Android自带的自动化测试工具,允许用户对Android设备的UI界面进行元素提取,执行touch和drag等操作,配合HierarchyViewer等模块可以非常方便地进行自动化操作. 首先,用户需要安装好Android开发环境,同时运行Monkeyru