Airtest录制、运行移动端应用脚本
Airtest是由网易游戏推出的UI自动化测试解决方案,是一个跨平台的、 基于图像识别 的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS。
并且提供了基于UI控件识别的Poco框架,目前也支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平台。
为了让测试人员更好上手,网易还贴心地提供了AirtestIDE工具,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写 Airtest 和 Poco 代码。
如果你是一个自动化新手同学,建议借助AirtestIDE编写/运行自动化脚本;但是当你能够熟练使用Airtest和Poco框架之后,那就使用python语言自由发会编写自动化脚本吧。
Allen老师今天就带着大家来做一个简单的案例,带大家一起体验airtest带给我自动化测试的方便体验。
一、案例说明
启动手机淘宝app
打开淘宝首页的今日爆款
选择爆款首页中的第一个商品
商品页复制商品的淘口令
关闭淘宝app
启动手机淘特app
等待弹出淘口令
点击商品链接
关闭淘特app
二、使用airtestide录制、运行脚本
1、启动airtest并创建airtest项目
2、连接手机设备
若连接android手机设备,需要本地安装adb软件,手机中开启开发者选项、usb调试,并连接手机到pc电脑。
在airtest的设备窗口刷新adb,则会显示手机设备,点击connect按钮。
3、开发业务脚本
我们采用airtest的poco框架,识别页面app的页面元素并进行定位、操作。
Poco辅助助手中定位到app的元素,直接双击该元素即可生成poco语法。
定义poco对象:poco = AndroidUiautomationPoco(force_restart=False)
如点击商品分享按钮:poco("com.taobao.taobao:id/uik_public_menu_action_icon").click()
在代码编写中还会用到一些常用的语法:
连接手机设备:android_device = connect_device('android://127.0.0.1:5037/28240ad5')
其中28240ad5为设备序列号,可以通过adb devices获取
启动app应用:start_app('com.taobao.taobao')
包名可以通过:adb shell dumpsys window | findstr mCurrentFocus获取
关闭app应用:stop_app('com.taobao.taobao')
强制等待:sleep(10.0)
点击设备上固定的坐标:touch((500.1000))
根据页面文本点击元素:poco(text="今日爆款").click()
下面是完整的实现上述业务的脚本:
# -*- encoding=utf8 -*-
__author__ = "allen"
from airtest.core.api import *
from airtest.cli.parser import cli_setup
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
auto_setup(__file__, logdir=True, devices=["android://127.0.0.1:5037/28240ad5?cap_method=MINICAP&&ori_method=MINICAPORI&&touch_method=MINITOUCH",])
android_device = connect_device('android://127.0.0.1:5037/28240ad5')
# script content
print("start...")
start_app('com.taobao.taobao')
#后续的元素定位都是基于这个组件
# poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
poco = AndroidUiautomationPoco(force_restart=False)
poco(text="今日爆款").click()
# 商品是变化的
touch((500.1000))
sleep(10.0)
poco("com.taobao.taobao:id/uik_public_menu_action_icon").click()
poco("android.widget.FrameLayout").offspring("com.taobao.taobao:id/uik_fl_container_share").child("com.taobao.taobao:id/uik_public_menu_content_1")[1].child("android.widget.LinearLayout").child("android.widget.FrameLayout").child("android.widget.FrameLayout")[1].child("android.widget.FrameLayout").click()
# 关闭淘宝进,打开淘特
stop_app('com.taobao.taobao')
start_app('com.taobao.litetao')
# 等待口令打开
sleep(10.0)
# 点击查看详情
poco("com.taobao.litetao:id/tpd_item_action").click()
sleep(10.0)
stop_app('com.taobao.litetao')
print("end...")
3、保存脚本
在airtestide中文件菜单,点击保存文件到本地磁盘目录。
4、运行脚本
点击开始运行按钮,既可以启动运行。
运行结果见视频:《airtest脚本演示.mp4》
5、查看运行报告
在airtestide中运行菜单下,点击打开运行目录,选择log目录,即可展示报告。
三、使用IDE的运行脚本命令
我们使用AirtestIDE自带的环境跑脚本时,在log查看窗的顶部会刷出运行当前脚本的一条命令,我们可以直接复制该命令去命令行终端运行:
直接复制此条命令运行脚本,实际上我们还是利用了AirtestIDE自带的环境跑脚本,而无需额外部署本地Python环境 。
切换到airtest安装目录下,启动cmd窗口,运行上面的命令(复制的),结果与再AirtestIDE中运行效果一致。
四、使用python环境运行air脚本
如果直接使用本地python环境进行,要求本地环境在python3以上,python3.9以内,本文采用python3.8环境。
然后就在这里Python环境里面,像安装其它Python第三方库一样,安装我们的自动化测试框架。
# 安装Airtest框架
pip3 install airtest
# 安装Poco框架;编写了Poco语句就需要安装
pip3 install pocoui
# 安装airtest-selenium框架;编写了airtest-selenium语句就需要安装
pip3 install airtest-selenium
如果有出现报错或者超时,要确定python版本或者更换python镜像源,建议使用清华源或者其它国内源安装.
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple airtest
成功安装之后,我们可以使用pip list命令,查看我们的安装情况及框架版本信息:
作者尝试上面的三个库的版本是可用的,如果直接使用上述安装不可用,可能是更新的新版本的兼容性问题,可以尝试使用指定版本安装,切记poco与pocoui,两者会产生冲突。
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple airtest==1.1.11
配置好环境之后,切换到保存的air脚本目录下,找到taobao.py文件,连接收手机设备,执行该文件即可。
执行结果与上面两种执行效果一致。
更多关于软件测试培训的问题,欢迎咨询千锋教育在线名师,如果想要了解我们的师资、课程、项目实操的话可以点击咨询课程顾问,获取试听资格来试听我们的课程,在线零距离接触千锋教育大咖名师,让你轻松从入门到精通。