uiautomator2,一款比appium还好用的app自动化测试框架

一说到app自动化测试,第一反应就会想到appium这个框架,和web端的selenium一样,但是对于appium来说,搭建环境非常重要,很多人都被环境搞得望而却步了,放弃了appium。
下面说的uiautomator2这个框架,环境比appium简单多了,可以值得一学的

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请求,执行制定的操作

2.安装

1.首先跟appium一样,要先安装adb
下载androidsdk,并配置环境变量

2.安装uiautomator2
这个不好安装,这里推荐用清华源或者豆瓣源来安装

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --pre -U
uiautomator2

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
可能会超时,这里推荐豆瓣源安装,亲测可用

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里还有更多好玩好用的方法,慢慢学习,会爱上这个框架的

猜你喜欢

转载自blog.csdn.net/shenshenruoxi/article/details/108632507
今日推荐