一说到app自动化测试,第一反应就会想到appium这个框架,和web端的selenium同样,可是对于appium来讲,搭建环境很是重要,不少人都被环境搞得望而却步了,放弃了appium。
下面说的uiautomator2这个框架,环境比appium简单多了,能够值得一学的
python
1.uiautomator2简介和原理分析
uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。它原本是Google提供的一个自动化测试的Java库,后来发展了python-uiautomator2,封装了谷歌自带的uiautomator测试框架,提供便利的python接口,用它能够很便捷的编写python脚原本实现app的自动化测试
原理解析:
python端:运行脚本,往移动端发送HTTP请求
移动端:安装atx-agent,而后atx-agent启动uiautomator2服务进行监听,并识别python脚本,转换为uiautomator2的代码。
移动设备经过WIFI(同一网段)或USB接收到PC上发来的HTTP请求,执行制定的操做
android
2.安装
1.首先跟appium同样,要先安装adb
下载androidsdk,并配置环境变量
web
2.安装uiautomator2
这个很差安装,这里推荐用清华源或者豆瓣源来安装
浏览器
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --pre -U
uiautomator2
app
3.设备初始化:首先设备链接到PC,并可以adb devices发现该设备
我这里用的是夜神模拟器
框架
4.在设备上安装atx-agent
执行 python -m uiautomator2 init
夜神模拟器就自动安装了,手机真机可能须要点击赞成安装
工具
3.验证设备是否链接成功
首先看设备是否链接上了
导包并重命名 import uiautomator2 as ut
链接设备是ut.connect(‘127.0.0.1:62001’)
学习
import uiautomator2 as ut d=ut.connect('127.0.0.1:62001') print(d.device_info)
打印出来这个设备的全部信息
这就说明链接是成功的
接下来须要定位元素,这里介绍一款好用的定位工具:weditor ,不只能够实时定位,并且还能够在里面编写调试代码
测试
4.安装weditor
执行 pip install --pre weditor
可能会超时,这里推荐豆瓣源安装,亲测可用
ui
pip install -i https://pypi.douban.com/simple weditor
安装成功
执行
python -m weditor
会在浏览器打开一个网页
打开以后是这样的
在模拟器上运行app,点击Dump Hierarchy,就能够在浏览器显示出手机的屏幕了,打开实时,能实时看到
5.打开app并编写代码
uiautomator2查看当前运行的app的命令是uiautomator2 current
好比我在模拟器里打开今日头条,在cmd里执行uiautomator2 current
就会看到包名和当前类名
uiautomator2 打开app也比appium简单,直接用app_start方法就好了,如今来在pycharm里写代码
d=ut.connect('127.0.0.1:62001') print(d.device_info) d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打开app
我如今要点击到登陆页面,在weditor里查到元素定位,而后用d()就能够了,比appium里的find_element_by_xpath这种简单
下面是我写的代码
import uiautomator2 as ut import time d=ut.connect('127.0.0.1:62001') print(d.device_info) d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打开app d.implicitly_wait(10) d(text='热榜').click() d(text='未登陆').click() d(text="登陆").click() d(text="手机号").send_keys('13409012321') d(text='请输入验证码').send_keys('123456') d(text='进入头条').click()
uiautomator2里还有更多好玩好用的方法,慢慢学习,会爱上这个框架的