最近工作中遇到游戏APP需要实现UI自动化测试,这个app中真的是典型的混合App,有Android原生控件,有webview控件,以及游戏操作页面。研究了Appium,发现appium实现跨应用操作很困难,研究了好几天也没找到实现的方法。后来在公司大佬的带领下,接触到了atx这个自动化的框架。今天来说一下,使用atx,uiautomator2,pytest,selenium 来实现混合App的UI自动化及生成测试报告。
一、环境准备
本人使用的是系统是Mac,所以接线来的都是在Mac电脑上进行的。
1、安装adb,并将adb配置到环境变量中。具体请查看:
https://blog.csdn.net/qq_26287435/article/details/81513649
2、安装pytest
1 # 安装 2 pip install -U pytest 3 # 查看安装版本 4 pip show pytest 5 # 或者 6 pytest --version
pytest的使用方法请自行查看:
https://www.jianshu.com/p/75c27fe23b4e
3、安装uiautomator2
pip install --pre -U uiautomator2 #默认安装最新版本 pip install uiautomator2=0.1.11#指定版本安装
我使用的是0.1.11版本的,安装的时候指定版本:
4. 设备安装atx-agent
首先设备连接到PC,并能够adb devices发现该设备。
# 从github下载atx-agent文件,并推送到手机。在手机上安装包名为`com.github.uiautomator`的apk $ python -m uiautomator2 init success
看到success ,代表atx-agent初始化成功。手机上会出现一个小汽车图标的应用。
5.安装selenium
pip install selenium
6.安装控件定位工具
weditor beta 针对Android和iOS原生应用快速定位元素,自动生成代码。
安装方式:
pip install --pre weditor
7.安装截图工具:
在进行游戏时,游戏界面的元素是无法使用原生的控件进行定位的,所以需要用到atx基于图片识别的方式来定位游戏控件。
截图工具使用方式:
python -m atx gui
二、UI自动化实现
atx API接口使用请查看:
https://github.com/NetEaseGame/ATX/blob/master/docs/API.md
接口描述了操作手机APP的各种方法。
1、废话不多说,直接上代码:
1 # -*- coding: utf-8 -*- 2 3 import atx 4 import os 5 from PIL import Image 6 import pytest 7 import allure 8 from allure_c