使用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自动化/压测的主要内容,如果未能解决你的问题,请参考以下文章