自动化测试工具-Airtest使用介绍

一、Airtest介绍

1、简介

Airtest是一款基于 Python 的、跨平台的UI自动化测试框架。因为它基于图像识别的原理,所以适用于Android、iOS和Windows应用。 因此,不论是手机上的app还是游戏,或者是Windows电脑上面的应用或者游戏等等,都可以用Airtest框架。 Airtest框架主要由poco框架、Airtest框架、AirtestIDE组合而成。AirtestProject是由网易游戏推出的UI自动化测试解决方案 官网介绍地址:https://airtest.doc.io.netease.com/

2、该框架的优缺点

优点

(1)安装配置容易,上手较快

(2)语言Python为主,与组内技术栈吻合

(3)支持图像识别和控件识别混合使用,支持脚本录制,可覆盖绝大多数的场景

(4)原理还是写python脚本,可扩展性强

(5)网上的相关资料目前来说已较为丰富

缺点

(1) 连接大屏后UI后,AirtestIDE会变得较为卡顿

(2)多条用例聚合执行为收费功能,多条用例生成报告也为收费功能

(3)图像识别在部分场景下识别可能出现不准

(4)代码问题定位较难,执行用例过程执行位置不能判断

3、坐标介绍

Airtest框架-绝对坐标

Airtest是基于图片识别的框架,讲究所见即所得,所以其坐标都是使用的屏幕绝对坐标,如:touch([500,500])、swipe([100,100],[500,500]) 假如手机屏幕就是1000*1000,[500,500]就是屏幕的中心点,这就是屏幕的绝对坐标;

poco框架-相对坐标

假如图中左右是两个手机屏幕,一个是100*100,一个是200*200。小手机左上有个按钮,其中心点绝对坐标是[25,25],那么这个点相对于整个屏幕百分比大小就是[25/100,25/100]=[0.25,0.25];同理,大手机左上按钮的中心点绝对坐标是[50,50],那么这个点相对于整个屏幕百分比大小就是[50/200,50/200]=[0.25,0.25];

所以同一APP运行在这2个手机上,我们想利用坐标点击左上的按钮,如果用Airtest框架就要分别写成:touch([25,25]) 和 touch([50,50])而如果是用Poco框架,则只要写成poco.click([0.25,0.25])即可通用;

二、环境安装

1、安装python环境

安装介绍:python安 装介绍

安装python环境注意事项:

(1)python官网地址:python官网

(2)推荐安装python版本3.7.6(已安装环境的忽略,新安装的用该版本)

(3)选择下载64位的安装包;

(4)安装时选择加入环境变量;

(5)安装位置自己选择;

(6)选择自定义安装(Cutormize installation)

2、安装pycharm编辑器环境

安装介绍:Pycharm安装及环境配置

安装pycharm环境注意事项:

(1)python官网地址:PyCharm官网

(2)下载社区版Community(免费)

(3)自定义安装目录;

(4)安装后添加python环境;

3、安装AirtestIDE

安装介绍:Airtest官方介绍

安装AirtestIDE环境注意事项:

(1)Airtest官网下载地址:Airtest下载地址

(2)python版本要求:python2.7以上

(3)下载完后解压,点击右图1中的文件;

(4)打开AirtestIDE的主界面如图二;

三、Airtest使用

1、AirtestIDE基本使用

右图为AirtestIDE的主窗体,可分为工具栏、Airtest辅助窗、Poco辅助窗、脚本编辑框、Log查看窗、设备窗(移动设备连接、windows窗口连接、IOS设备连接)

(1)工具栏操作

A、文件

包含新建脚本、打开脚本、保存脚本、脚本另存、最近打开功能;新建脚本时,最好新建.air Airtest项目,可以更方便的键入命令及后续运行脚本;

B、运行

包含运行脚本、停止运行、打开报告目录; 点击打开报告目录可直接打开本条用例的测试报告;

C、Firebase

包含打包测试APK和打包多个脚本; 该功能需要安装java环境,且对于使用过poco框架的脚本不支持打包;目前暂无使用场景

D、窗口

包含恢复默认布局及窗口的全部布局; 有时候关掉了某个窗口就可以来这里打开;

(2)Airtest辅助窗

说明:在未连接设备时,辅助窗的部分功能灰显不可用,连接设备后都可正常使用; 官网API文档地址:Airtest官方文档

A、touch

点击操作,可以点击图片:touch(Template(r"tpl1627996328848.png", record_pos=(-0.339, 0.003), resolution=(1080, 2310)))或点击坐标touch([10,10]);

B、wait

等待出现某个符合匹配度的图片:wait(v, timeout=None, interval=0.5, intervalfunc=None)

C、swipe

在当前页面执行滑动操作:swipe(v1, v2=None, vector=None, kwargs)

D、exists

检查设备上是否存在给定目标,返回坐标,不是断言语句

E、text

在激活的文本框内输入文本:text(text, enter=True, kwargs)

F、keyevent

在设备上执行按键事件,有返回home页面、返回、电源等,在大屏上可以使用的就是返回键:keyevent(keyname, **kwargs)

G、snapshot

对文件进行截图,并保存到文件中:snapshot(filename=None, msg='', quality=None, max_size=None)

H、sleep

程序等待一段时间,单位为S:sleep(secs=1.0)

I、assert_exist

断言当前页面上目标存在:

assert_equal(poco("com.taobao.taobao:id/dx_root").get_text(), "Tmall new product", "The text attribute value of the control is Tmall new product")

assert_equal(str(poco(text="Tmall new product").attr("enabled")), "True", "The enabled attribute value of the control is True")

(3)Poco辅助窗

A、Poco框架常用指令

控件单击

poco("star_single").click()

控件长按

poco('star_single').long_click()

控件滑动

poco("Handle").swipe([0,0.2])----向下滑动0.2个单位距离

断言控件存在

assert_equal(poco("star_single").exists(),True,"断言星星控件存在")

拖动控件

poco("playDragAndDrop").child("star")[0].drag_to(poco("shell"))

拖动到固定目标上

poco("playDragAndDrop").child("star")[1].drag_to([0.503, 0.705])

内部偏移

pearl = poco(texture="icon")

pearl.focus([0.1,0.1]).long_click()----指定控件内的偏移位置进行点击

外部偏移

pearl_text = poco(text="pearl") pearl_text.focus([0.5,-3]).long_click()----指定控件外的位置进行点击

等待控件出现

poco(texture="icon").wait(timeout=10).long_click()----在10s内等待控件出现,如出现,则进行长按操作

B、Poco框架导入及定义

poco框架的导入和airtest框架不一样,当新建一个air脚本时,自动会生成初始代码导入airtest框架,poco框架导入有两种方式

选择辅助窗中的某一平台,编辑框中会提示是否导入框架,点击Yes即可导入且定义

直接代码导入并定义

from poco.drivers.android.uiautomation import AndroidUiautomationPoco

poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

(4)脚本编辑窗

A、新建 .air 脚本

打开你的IDE,点击左上角的 文件--新建脚本--.air Airtest项目 ,即可新建一个.air脚本。

B、查看初始代码

-*- encoding=utf8 -*-

author = "Administrator" #自定义脚本的作者信息

from airtest.core.api import * #导入airtest的主要api

auto_setup(__file__)

C、编写脚本

Airtest录制模式

录制的脚本并不完全是正确/最优的脚本 ,有时候录制脚本自动生成的截图,并不能很好地回放出来我们想要的操作,这时候我们可以借助Airtest辅助窗的其它快捷键,帮助我们实现更加准确和更加丰富的脚本

Airtest辅助窗的API快捷键

点击快捷键后,进行截图或其他操作,可自动生成代码

Poco一键录制

与Airtest的录制功能相似,Poco录制的脚本也不一定是最优脚本,我们还可以利用辅助窗提供的控件检索功能,来精确定位到每一个控件,查看它的详细属性,依此来编写控件的定位和操作脚本:

Poco辅助窗的API快捷键

双击poco辅助窗中出现的任意节点,则会在辅助窗中显示节点的完全名称

直接编写代码

需要一定的python基础,或者使用命令库可直接复制;

(5)Log查看窗

log查看窗有2个功能,1个是在检索控件的时候,查看控件的属性详情,另一个就是在运行脚本的时候查看运行log。

(6)设备窗

在设备连接窗口,我们可以连接Android真机、模拟器、iOS真机、Windows窗口等多种类型的待测设备

目前主要使用的是连接安卓设备,在远程设备连接中填入要连接的设备的无线IP,点击连接即可连接;

在移动设备连接窗口点击connect,即可打开连接的设备的画面,进行Airtest快捷键操作和Poco快捷键操作;

其他设备连接目前暂未用上,待后续补充

(7)AirtestIDE的主界面交互

AirtestIDE的主界面是由多个可dock窗口组合而成的,我们可以按照自己的开发习惯和实际需要进行灵活拖拽布局 ,并可以通过下拉菜单 "窗口"-"恢复默认布局" 将内部布局恢复为默认状态。

布局信息会在软件关闭时会自动保存,下次重新启动软件/下载新版本软件使用时,之前的布局记录会自动延续

2、连跑框架使用(多条用例一起执行)

(1)配置文件如下

(2)生成的报告如下

(3)框架目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木头人123。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值