UiAutomator上手笔记

本文档介绍了如何使用UiAutomator进行自动化测试,包括环境搭建、创建第一个测试脚本,以及给10086打电话的自动化实现。详细步骤包括安装JDK、配置环境变量,创建Java项目,导入必要的库文件,编写测试类,使用Uiautomatorviewer分析界面元素,最终打包运行脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


简介

  Uiautomator是Android4.1发布的一个测试框架,它可以用来做UI的测试,可以模拟用户的日常操作,如拨打电话,接听电话,发送短信。拍照等等
使用Uiautomator来做自动化测试不需要了解程序的内部结构,不需要程序的源码。不需要对手机做任何额外的设置。
  简单来说,UIautomator就是一个用来对UI进行验证的自动化框架,可以模拟任何用户的操作。
本WIKI将简单的介绍Uiautomator的环境搭建和书写一个简单的例子。

测试流程

  1. 安装测试用的app
  2. 根据软件来编写测试脚本
  3. 编译测试脚本并推送到手机
  4. 运行测试脚本并分析测试报告

环境搭建

  1. 下载安装JDK
  2. 配置Java环境
  3. 下载AndroidSDK
  4. 配置Android 环境
  5. 下载ANT
  6. 配置ANT环境变量
  7. 下载JAVA IDE,如elcipse

所需工具下载链接:\\10.120.10.100\ckt_cd_share\Test\Training\Harrier\AutoTesting Tools

创建第一个脚本

新建项目

在环境配置好了之后我们来写一个简单的脚本,这里一eclipse ide为例。

  • 点击File->New->Java Project(见图1)然后创建一个Java Porject

Ryan create Java Project.png

  • 填入Project name然后点击完成(见图2)

Ryan create Java Project Uiautomator Testing 2015 Q3.png

添加支持的lib文件

  • 在项目名上点击右键(这里项目名为Demo),选择新建一个文件夹用来放库文件,然后选择文件夹(见图3)

Ryan create Folder Uiautomator Testing 2015 Q3.png

  • 进入Android SDK的platforms\android-22(根据实际情况选择),复制android.jar和uiautomator.jar,并粘贴上一步创建的lib文件夹里
  • 把android和uiautomator.jar添加到Build path里。(见图4)

Ryan set build Path Uiautomator Testing 2015 Q3.png

新建包

  • 在项目上点右键,新建一个包。(见图5)

Ryan create Package Uiautomator Testing 2015 Q3.png

新建类

  • 在新建的包上点右键,新建一个类,并输入类名(如Demo),并把Superclass选择为:com.android.uiautomator.testrunner.UiAutomatorTestCase(见图6)

Ryan create class Uiautomator Testing 2015 Q3.png

  • 点击完成后的代码如下:
package com.demo;

import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class Demo extends UiAutomatorTestCase {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}

给10086打个电话

这里我们将启动电话并打电话给10086.首先我们来看看在平时测试中我们要打电话给10086是咋做的。

  1. 点开电话app
  2. 输入10086
  3. 点击拨号。

说到这里,也许您就明白了。自动化的操作也是一样的,首先,我们打开电话app,然后输入电话号码,点击拨号。那具体该咋做呢?接下来我们一起来实现打电话给10086.

首先我们需要了解一下uiautomator的界面分析工具:Uiautomatorviewer。通过它我们可以看到界面每个元素的对应信息,如文字属性,描述,资源id。通过对应的属性我们可以在手机上找到对应的控件(如电话的text属性是phone,我可以让自动化脚本点击phone打开电话app)

  • Uiautomatorviewer的界面如下图:

Ryan analyze UiObject Uiautomator Testing 2015 Q3.png

 使用鼠标在界面区域里选择某个图标,会在空间属性区域里显示所选择对象的属性,常见的属性有,文字属性,描述,资源id等,具体信息在后面的wiki在介绍。

层次结构是您所选择的对象在页面的哪一个层级(android的页面布局是一个xml的文件)。使用Uiautomator来写自动化脚本,需要您能熟练的使用控件的各种属性。

  • 选择电话图标,我们可以看到电话图标对应的text属性是Phone(系统语言为英语)

打电话的脚本

这里就做简单的演示,更多的细节在后续的wiki里进行分享。

import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class Demo extends UiAutomatorTestCase {

	public void testPhone() throws UiObjectNotFoundException {
		// 在当前界面查找text名为Phone的对象,并把他放到名为phone的变量里
		UiObject phone = new UiObject(new UiSelector().text("Phone"));
		// 点击打开Phone。
		phone.clickAndWaitForNewWindow();
		// 打开拨号盘
		UiObject dial = new UiObject(
				new UiSelector()
						.resourceId("com.android.dialer:id/floating_action_button"));
		dial.clickAndWaitForNewWindow();
		// 找到对应的按键和拨号键
		UiObject one = new UiObject(
				new UiSelector().resourceId("com.android.dialer:id/one"));
		UiObject zero1 = new UiObject(
				new UiSelector().resourceId("com.android.dialer:id/zero"));
		UiObject zero2 = new UiObject(
				new UiSelector().resourceId("com.android.dialer:id/zero"));
		UiObject eight = new UiObject(
				new UiSelector().resourceId("com.android.dialer:id/eight"));
		UiObject six = new UiObject(
				new UiSelector().resourceId("com.android.dialer:id/six"));
		UiObject call = new UiObject(
				new UiSelector()
						.resourceId("com.android.dialer:id/dialpad_floating_action_button"));
		// 开始点击对应的按键
		one.click();
               //延迟0.5秒
		sleep(500);
		zero1.click();
		sleep(500);
		zero2.click();
		sleep(500);
		eight.click();
		sleep(500);
		six.click();
		sleep(500);
		call.click();

	}

}

打包运行脚本

打包脚本:

 打包的命令为:android create uitest-project -n <name> -t 1 -p <path>
 <name>是包含测试代码的项目名称,<path>是包含测试代码的项目文件路径。-  t后面的1是Android sdk版本id 
 例:android create uitest-project -n demo -t 2 -p "O:\0.code\Demo"
 查看android id: android list,然后选择api大于16的即可。

安装脚本:

 adb push <path>/bin/<name>.jar /data/local/tmp/
 如:adb push "O:\0.code\Demo\bin\demo.jar" /data/local/tmp/
 只需要把脚本push到手机的data/local/tmp/目录即可
 运行脚本:adb shell uiautomator runtest xxxx.jar -c xxx方法。
 如:adb shell uiautomator runtest demo.jar -c com.demo.Demo#testPhone



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值