python + uiautomator2测试框架搭建

本文介绍了如何使用uiautomator2库进行Android应用自动化测试,包括安装、设备连接、APP操作、元素定位、按键操作和智能等待,以及辅助工具WEditor的使用。重点讲解了WEditor在元素定位中的便捷作用。

一、介绍

        uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库,仅支持Android平台的原生应用测试。。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。它提供便利的python接口。允许测试人员直接在PC上编写Python的测试代码,操作手机应用,完成自动化测试,大大提高自动化代码编写的效率。 

        原理解释:
        python端:运行脚本,往移动端发送HTTP请求
        移动端:安装atx-agent,然后atx-agent启动uiautomator2服务进行监听,并识别python脚本,转换为uiautomator2的代码。
        移动设备通过WIFI(同一网段)或USB接收到PC上发来的HTTP请求,执行制定的操作
​​​​​​​
二、安装

        安装 uiautomator2,
                命令行窗口:pip install -U uiautomator2
        设备安装atx-agent:                         

# init就是所有USB连接电脑的手机上都安装uiautomator2
python -m uiautomator2 init


三、安装weditor

        在APP自动化测试是,需要使用到元素定位,UI元素定位的工具--WEditor,方便我们快速的识别手机上的元素,方便写代码。WEditor能够提供辅助编写脚本,定位元素,调试代码等功能,是基于python的一个查看APP元素的工具。
        安装命令:pip install weditor==0.6.4  
        由于直接命令pip install weditor会报错,解决方法 太麻烦,所以直接降版本安装。
        查看安装是否成功:weditor --help
        使用:命令行窗口输入:python -m weditor   ,默认启动后,会直接在本地打开一个网页,接下来的操作都可以只在这个网页完成。


四、操作及应用

        1、链接手机

        device = uiautomator2.connect()  ,用的最多的是默认只有一台连接,或指定序列号链接。

import uiautomator2 as u2

#链接设备,这里是通过adb链接手机的;所以要提前装好adb;并能够adb devices发现该设备;
#用的最多的是默认的和指定序列号的,最方便
#不提供参数,默认连接方式,适用于只有一台设备
#device = u2.connect()

#有多台设备,指定设备ip,通过USB链接, 我的设备序列号是127.0.0.1
#device = u2.connect('127.0.0.1')

#通过wifi链接,设备IP要和PC在同一网络;在夜神模拟器,查到的序列号和ip同样
#device = u2.connect_wifi('127.0.0.1')

#打开被测试的app
device(text='浏览器').click()

注:用adb devices 查看当前pc链接的所有设备。

        2、APP操作:安装、卸载、启动

        这些操作都需要 用到app 的包名:device.app_current()

imp
### 使用 Uiautomator2 搭建 Android 自动化测试框架 为了构建基于 Uiautomator2 的自动化测试框架,可以采用 Python 结合 pytest 和 allure 报告工具来增强功能和可读性。以下是具体实现方法: #### 安装依赖库 首先安装必要的 Python 库 `uiautomator2` 及其他辅助工具: ```bash pip install --upgrade pip setuptools wheel pip install uiautomator2 pytest allure-pytest ``` #### 初始化设备连接 确保目标 Android 设备已通过 USB 调试模式连接到开发机器上,并执行初始化命令使设备准备好接收指令: ```python import uiautomator2 as u2 d = u2.connect() # 默认连接 adb devices 列表中的第一个设备 print(d.info) # 打印设备信息验证连接状态 ``` #### 编写测试脚本 创建一个简单的测试案例文件 test_sample.py 来演示基本操作流程: ```python def test_launch_app(): d.app_start("com.example.package") # 启动指定的应用程序包名 assert d(resourceId="some_id").exists, "Element not found" if __name__ == '__main__': import pytest pytest.main(['-v', '--alluredir=./result']) ``` 此段代码会启动给定应用并检查特定控件是否存在[^2]。 #### 配置 PyTest 测试环境 编辑项目的根目录下的 conftest.py 文件配置全局设置或者自定义 fixture 函数供多个测试用例共享资源管理逻辑。 #### 生成 Allure 报告 运行全部测试之后可以通过如下命令生成美观详细的 HTML 格式的报告以便于分析结果: ```bash allure serve ./result/ ``` 上述过程描述了如何利用 Uiautomator2 构建一套完整的 Android UI 自动化测试解决方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值