使用uiautomator2 对Android设备进行UI自动化/压测

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用uiautomator2 对Android设备进行UI自动化/压测相关的知识,希望对你有一定的参考价值。

参考技术A uiautomator2 是一个可以使用Python对android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:

1、测试脚本只能使用Java语言。

2、测试脚本必须每次被上传到设备上运行。 我们希望测试能够用一个更脚本化的语言,例如Python编写,同时可以每次所见即所得地修改测试、运行测试。

1.1 安装adb环境--不予赘述

1.2 安装python-uiautomator2

pip install --pre -U uiautomator2

1.3 设备安装atx-agent

python -m uiautomator2 init

1.4需要找元素

python -m pip install opencv-python

python -m pip install weditor

1.5:需要自动化框架

python -m pip install uiautomator2

3:要在手机上初始化,连上手机后

查看是否连接手机成功

python -m uiautomator2 init

连上手机后

python -m weditor

浏览器会自动打开一个网页 http://atx.open.netease.com(注:这个网址仅提供一个前端,而python  -mweditor这个命令则本地开放了HTTP的接口,前端去跟本地的服务去通信)

1、安装包的时候使用adb install -g,可以去掉一些系统的弹框

1、多种方式灵活使用,id,xpath,坐标,text等等

2、while循环,用来判断找元素时的循环判断

3、try/exception捕获错误,避免找不到元素的时候可以找到下一个元素,不会报错停止运行

4、watcher的使用去作为监听器,提前写好需要监听的元素,碰到了就自动点击

如何从 uiautomator 获取 android 设备的正确资源 ID?

【中文标题】如何从 uiautomator 获取 android 设备的正确资源 ID?【英文标题】:how to get the correct resource id for an android device from uiautomator? 【发布时间】:2021-07-28 14:51:52 【问题描述】:

我对 uiautomator 中的资源 ID 有疑问:

btn="id:/image_button_cancel"

为什么有时我们会加上“.*”那是什么意思?

btn="id:/image_button_cancel.*"

【问题讨论】:

【参考方案1】:

这是一个正则表达式。点表示任何字符,星号表示零次或多次重复。

所以使用 btn="id:/image_button_cancel.*" 将匹配任何以 "id:/image_button_cancel" 开头的资源 id。

示例(匹配的 id):

id:/image_button_cancel
id:/image_button_cancel_action

示例(不匹配的 id):

id:/cancel
id:/image_button

搜索正则表达式以更好地理解它。

【讨论】:

【参考方案2】:

我没有完全理解你的问题。能详细点吗?

.*用于通过正则匹配resourceId。

所以 id:/image_button_cancel.* 表示它将匹配任何以 id:/image_button_cancel

开头的 resourceId

例如,

id:/image_button_cancel_1

id:/image_button_cancelQuick

像这样……

【讨论】:

以上是关于使用uiautomator2 对Android设备进行UI自动化/压测的主要内容,如果未能解决你的问题,请参考以下文章

一个好用的移动端自动化框架-uiautomator2

手机APP自动化之uiautomator2 +python3 UI自动化

Python UI自动化

UIAutomator2 + Python 入门使用总结

小白对uiautomator2的理解

UiAutomator1.0 与 UiAutomator2.0