uiautomator 教程

本文是关于Google的安卓自动化测试工具UiAutomator的详细教程,介绍了如何搭建环境,编写和运行测试脚本,使用uiautomatorviewer进行布局分析,以及UiDevice的常用方法和控件查找技巧。内容包括JDK和SDK的安装,Eclipse项目的创建,脚本打包与推送,以及UiDevice的点击、滑动等操作。

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

  • 简介

    UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,基于Accessibility服务。功能很强,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1. 测试脚本只能使用Java语言 2. 测试脚本要打包成jar或者apk包上传到设备上才能运行。

  • 环境搭建
  1. 安装JDK,并配置好环境变量
JDK下载地址:https://pan.baidu.com/s/1Sa6Dq2a3zciuZ_9udcDwPQ    提取码:ybe7
  1. 下载SDK,解压
SDK下载地址:https://pan.baidu.com/s/1vMASKxDfsx6wo4MwhiVKnw    提取码:j525

  1. adb环境变量配置
https://blog.youkuaiyun.com/shengmer/article/details/79027828
  1. 下载eclipse,解压
eclipse下载地址:https://pan.baidu.com/s/1IXIS23S52zUG80nakaAlXQ    提取码:t1ye
  1. 下载相关jar包
jar包下载地址:https://pan.baidu.com/s/1Wv5HbN5skX4oESLDR52WHA    提取码:igge
  • 新建项目
  1. 打开eclipse,新建java 项目
点击File --> New --> Java Project --> 填写项目名 --> 点击Finish

  1. 在新建项目根目录新建libs文件夹,将开始下载的jar包,解压之后,放入libs文件夹,并引用
1:右键项目名 --> New --> Folder

2:在Folder name 栏目填写 libs --> 点击Finish

3:将开始下载的jar包,解压之后,放入libs文件夹

4:右键jar包 --> Build Path --> Add to Build Path

  1. 开始编码
1:新建类,继承 UiAutomatorTestCase
import com.android.uiautomator.testrunner.UiAutomatorTestCase;
public class xxx extends UiAutomatorTestCase {

}
2:在新建类中,写一个必须包含test字样的公开的空返回值方法
public class xxx extends UiAutomatorTestCase {
   
   
	public void testDemo() {
   
   

	}
}
3:在新建方法中,开始编写自动化代码
4:代码打包

在项目根目录新建 MyInjectEventApp.bat 文件,然后右键编辑,写入:

del classes.dex
del bin\uiTests.jar

cd bin

jar cvf  uiTests.jar *

copy uiTests.jar ..\uiTests.jar

cd ..

set PATH=%PATH%;D:\android\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W
cmd /c dx --dex --output=.\classes.dex .\uiTests.jar

aapt add test.jar classes.dex

cd bin

说明:
D:\android\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W 是上面下载的SDK文件里面android-4.4W的目录。
test.jar 是打包完成时候的jar包名字
基本写法的话, 修改这两个地方就ok。
修改之后,保存该文件,双击MyInjectEventApp.bat,等待打包完成。

5:执行打包代码
新建test.bat 文件,写入:
adb push ./test.jar /data/local/tmp/

adb shell uiautomator runtest /data/local/tmp/test.jar -c com.test.xxx -e minWait 2 -e maxWait 5 -e wordType 1

说明:
adb push:将打包完成的test.jar 脚本文件,推送到手机/data/local/tmp/ 目录下
adb shell uiautomator runtest: 执行/data/local/tmp/目录下面的test.jar脚本文件

-c 指定包名+类名 -e指定脚本接收的参数 (注意空格不能少)

脚本接收参数示例

public class xxx extends UiAutomatorTestCase {
	private int min,max;
	private String wordType;
	public void testDemo() {
		wordType = getParamsVal("wordType", "1");    
		min = Integer.parseInt(getParamsVal("minWait","2"));
		max = Integer.parseInt(getParamsVal("maxWait","8"));
	}
	
	private Bundle params = null;
	//第一个参数:-e 后面的字段 
	//第二个参数:在获取不到第一个参数的时候,设置的默认值
	public String getParamsVal(String key, String defVal) {
		String val = "";
		if (null == params)
			params = getParams();
		if (params.isEmpty()) {
			return defVal;
		}

		if (params.containsKey(key)) {
			val = params.getString(key);
			if (null == val) {
				val = defVal;
			}
		} else {
			val = defVal;
		}
		return val;
	}
}



  • uiautomatorviewer 使用方法

在手机正常连接电脑之后,找到sdk\tools\bin\uiautomatorviewer.bat 文件,双击打开。

点击这个按钮,获取手机屏幕

假如,我想要获取 “动态消息” 的信息,在uiautomatorviewer获取出来的页面中,点中 “动态消息” ,在右边可以看到。

### 关于 uiautomator2 的教程 #### Python-uiautomator2 架构概述 Python-uiautomator2 是用于 Android 设备自动化测试的强大工具,其架构由两大部分组成:Python 客户端和移动设备端。Python 脚本负责执行并发送 HTTP 请求至移动设备;而移动设备则运行着封装了 uiautomator2 的 HTTP 服务,接收来自 Python 端的请求,并将其转化为相应的 uiautomator2 指令来完成特定的操作[^2]。 #### 安装与配置 为了开始使用 uiautomator2 进行自动化测试,需先确保已安装必要的依赖项以及设置好环境变量。通常情况下,这涉及到安装 ADB (Android Debug Bridge),它允许计算机连接到 Android 设备或模拟器。接着,在 Python 中可以通过 pip 工具轻松安装 `uiautomator2` 库: ```bash pip install uiautomator2 ``` #### 基础命令介绍 一旦完成了上述准备工作之后就可以编写简单的 Python 脚本来控制 Android 设备上的应用程序了。下面是一些常用的基础命令示例: - **启动应用** 启动指定包名的应用程序非常简单,只需调用 `.app_start()` 方法即可。 ```python import uiautomator2 as u2 d = u2.connect() # 默认连接 adb devices 列表中的第一个设备 d.app_start("com.example.package") # 替换为实际的目标 App 包名称 ``` - **点击屏幕某处** 使用坐标定位的方式可以精确地触发屏幕上某个位置的动作事件,比如点击按钮等。 ```python d.click(0.5, 0.8) # 屏幕宽度一半高度五分之四的位置进行单击操作 ``` - **输入文本** 当需要向编辑框内键入文字时,可通过 `.set_text()` 函数实现这一功能。 ```python text_field = d(resourceId="com.example.package:id/editText") text_field.set_text("Hello World!") ``` - **获取当前页面截图** 获取当前显示界面的内容作为图像文件保存下来也很容易做到。 ```python screenshot_path = "/path/to/save/screenshot.png" d.screenshot(screenshot_path).save() ``` 以上仅展示了如何利用 uiautomator2 实现基本交互动作的一部分例子。随着对该库理解程度加深,还可以探索更多高级特性和应用场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值