Android uiautomator实例使用

转载自:http://blog.csdn.net/huiguixian/article/details/22398193

Android测试工具中,Monkey Runner只要简单几个指令即可,但他的局限性在于都是基于像素位置操作,不具备移植性

而采用uiautomator编写的自动化测试工具则可以实现基于UiSelector选择直接操作uiObject来编写基于属性操作具备移植性的测试

注:

android官方给出的版本条件如下,若低于这些版本请先下载新版本

Android SDK Tools, Revision 21 or higher
Android SDK Platform, API 16 or higher

1. 首先我们先了解一下属性操作,并用uiautomatorviewer来分析一下应用UI组件。

工具路径:<android-sdk>/tools/.

左边为当前截屏,移动到上面有个红色的悬浮框表示当前选中节点,当前选中的会在右上角蓝色高亮,右下角显示即是此view的属性。

至于这些有什么作用,稍后我们再看(请注意content-desc属性,我们稍后会用)。

2. 打开eclipse,新建立一个Java Project,我这里建立的是MessageTestCase

2.1 之后右键项目Property->Java Build Path->Libraries->Add Library->JUnit->JUnit3->Finish

2.2 回到Property界面后还是选择Libraries->Add External JARs->选择Android SDK路径\platforms\android-**->选中Android.java和uiautomator.jar

2.3 之后点击ok,关闭Property窗口

3. 之后我们编辑code完成操作,主要操作是进入短信界面,编辑一条hello world

[java] view plaincopyprint?

  1. //所有UI自动测试都要继承UiAutomatorTestCase
  2. public class MessageTestCase extends UiAutomatorTestCase {
  3. public void testDemo() throws UiObjectNotFoundException{
  4. //获取UiDevice对象
  5. UiDevice device = getUiDevice();
  6. //点击home键操作
  7. device.pressHome();
  8. //如截图中提到的,我们使用content-desc属性Apps选择所有应用列表
  9. UiObject appsTab = new UiObject(new UiSelector().description("Apps"));
  10. appsTab.click();
  11. //因为短信界面在第二个列表页面,所以我们可以先滑动一下
  12. //通过scrollable属性来选定滑动view
  13. UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));
  14. appViews.setAsHorizontalList();
  15. appViews.scrollForward();
  16. //通过类名和Text找到短信应用图标,Text获取通过uiautomatorviewer
  17. UiObject messageApp = appViews.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Messaging");
  18. //点击并等待打开短信应用
  19. messageApp.clickAndWaitForNewWindow();
  20. //选择新建短信
  21. UiObject newMessage = new UiObject(new UiSelector().description("New message"));
  22. newMessage.click();
  23. //选择编辑信息
  24. UiObject editMessage = new UiObject(new UiSelector().text("Type text message"));
  25. editMessage.click();
  26. editMessage.setText("hello world!");
  27. }
  28. }

4. 然后编译和发布uiautomator测试

4.1 进入sdk tools目录使用如下命令:

android.bat create uitest-project -n MessageTestCase -t 1 -p "C:\Documents and Settings\***\workspace\MessageTestCase"

其中MessageTestCase是工程名,第二个路径是工程所在路径

然后会在工程所在路径生成一个build.xml文件

4.2 使用如下命令设置Android Home

set ANDROID_HOME=<path_to_your_sdk>

4.3 然后需要下载ant,并设置ant为环境变量(也可以不设置,不过使用这个命令前加上路径)

首先切换路径到工程所在目录,然后使用如下命令编译

apache-ant-1.9.3\bin\ant build

之后在工程的bin目录下回生成.jar文件

4.4 push jar文件到一个目录,如

adb push <path_to_output_jar> /data/local/tmp

4.5 运行测试

adb shell uiautomator runtest MessageTestCase.jar -c com.wjh.test.MessageTestCase

时间: 2024-10-11 16:49:23

Android uiautomator实例使用的相关文章

Android ExpandableListView实例Demo

前几篇文章介绍了Listview,但在实际开发中也经常会用到多层的Listview来展示数据,比如qq中的好友展示,所以这张来了解一下ExpandableListview,基本思想与Listview大致是相同的,所以用起来会比较方便. 实现效果图: 程序代码: 布局文件: activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools

Android ListFragment实例Demo(自定义适配器)

上一篇文章介绍了ListFragment,其中的ListView并没有自定义适配器,实际上在实际开发中常会用到自定义适配器,是实现更复杂的列表数据展示.所以这篇文章增加了自定义适配器,来进行ListView数据的展示. 实现效果图: 左边是Activity中的一个按钮,点击按钮会出现右边的Fragment相应的数据列表. 代码展示: 布局文件: activity_main: <LinearLayout xmlns:android="http://schemas.android.com/ap

Android UiAutomator 快速调试

背景:在Eclipse中不能直接运行Uiautomator工程,所以每次编写一份用例都要进行手动输入命令创建build文件.ant编译文件.push文件与运行测试这四步.调试起来不仅繁琐还浪费时间.网上找到一份快速调试的代码UiAutomatorHelper,可将这几步进行简化很方便. 步骤:将UiAutomatorHelper.java放到工程目录下(与测试脚本同步目录),在测试脚本中写个main方法.然后Run as ->java application即可 1 package com.ch

Ubuntu下编译Android JNI实例全过程

第一步:保证make和gcc可用 在shell中输入make-v,不报错就是对的.(可参考http://wenku.baidu.com/view/d87586c24028915f804dc24a.html.) 在shell中输入gcc-v,不报错就是对的. 第二步:安装NDK 下载NDK后,设置环境变量: 将android-ndk的路劲加到环境变量PATH中:sudogedit /etc/environment 然后再让这个更改的环境变量立即生效:source /etc/environment

【转】 Android常用实例—Alert Dialog的使用

Android常用实例-Alert Dialog的使用 AlertDialog的使用很普遍,在应用中当你想要用户做出"是"或"否"或者其它各式各样的选择时,为了保持在同样的Activity和不改变用户屏幕,就可以使用AlertDialog. 代码地址 https://github.com/JueYingCoder/AndroidUsefulExample_AlertDialog 这篇文章主要讲解如何实现各种AlertDialog,文章比较长,如果能认真读完,Aler

第7章 Android HAL实例解析

第7章 Android HAL实例解析 通过本章介绍Android的HAL知道HAL是为了一些硬件提供商提出的保护专利的驱动程序而产生的,是为了避开Linux的GPL束缚.HAL主要的存储目录有:1.libhardware_legany  2.libhardware:3.ril   4.msm7k.主要包含以下一些模块:Gps.Vibrator.Wifi.Copybit.Audio.Camera.Lights.Ril.Overlay等.大概了解了Android  HAL. 第1中方法 直接调用s

Android ListFragment实例Demo

该篇文章是一个ListFragment的一个实例,通过了解该实例,更能了解比较常用的ListFragment的用法,以及各Fragment之间的数据传递. 实现效果图: 该MainActivity中包括1个Button+2个Fragment(右边两个),点击Button,出现中间的list列表,点击列表中的任一项,相应item数值,会传递到右边的Fragment中并显示. 源代码: activity_main: <LinearLayout xmlns:android="http://sch

Android开发实例之miniTwitter登录界面的实现

原文: http://www.jizhuomi.com/android/example/134.html 本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面. miniTwitter登录界面效果图 先贴上最终要完成的效果图: miniTwitter登录界面的布局分析 首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分. 第一部分是一个带渐变色背景的LinearL

Android UiAutomator - CTS Frame

使用UiAutomator进行UI自动化测试后,生成的测试结果并不是很美观.为了生成一份好看的测试结果(报告),本文将使用CTS框架,当然也可以自己编写一份测试报告框架(如:生成html,excel报告). 一.环境搭建(这里就不再重复,可以去看CTS Test) JDK,SDK,android-cts,run.bat 配置好环境变量下载完资源后.将android-cts复制到SDK下,并且在该目录下创建一个run.bat文件.代码如下: @echo off set CTS_ROOT=%~dp0