赞
踩
Airtest是一款基于 Python 的、跨平台的UI自动化测试框架。因为它基于图像识别的原理,所以适用于Android、iOS和Windows应用。 因此,不论是手机上的app还是游戏,或者是Windows电脑上面的应用或者游戏等等,都可以用Airtest框架。 Airtest框架主要由poco框架、Airtest框架、AirtestIDE组合而成。AirtestProject是由网易游戏推出的UI自动化测试解决方案 官网介绍地址:https://airtest.doc.io.netease.com/
优点
(1)安装配置容易,上手较快
(2)语言Python为主,与组内技术栈吻合
(3)支持图像识别和控件识别混合使用,支持脚本录制,可覆盖绝大多数的场景
(4)原理还是写python脚本,可扩展性强
(5)网上的相关资料目前来说已较为丰富
缺点
(1) 连接大屏后UI后,AirtestIDE会变得较为卡顿
(2)多条用例聚合执行为收费功能,多条用例生成报告也为收费功能
(3)图像识别在部分场景下识别可能出现不准
(4)代码问题定位较难,执行用例过程执行位置不能判断
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])即可通用;
安装介绍:python安 装介绍
安装python环境注意事项:
(1)python官网地址:python官网
(2)推荐安装python版本3.7.6(已安装环境的忽略,新安装的用该版本)
(3)选择下载64位的安装包;
(4)安装时选择加入环境变量;
(5)安装位置自己选择;
(6)选择自定义安装(Cutormize installation)
安装介绍:Pycharm安装及环境配置
安装pycharm环境注意事项:
(1)python官网地址:PyCharm官网
(2)下载社区版Community(免费)
(3)自定义安装目录;
(4)安装后添加python环境;
安装介绍:Airtest官方介绍
安装AirtestIDE环境注意事项:
(1)Airtest官网下载地址:Airtest下载地址
(2)python版本要求:python2.7以上
(3)下载完后解压,点击右图1中的文件;
(4)打开AirtestIDE的主界面如图二;
右图为AirtestIDE的主窗体,可分为工具栏、Airtest辅助窗、Poco辅助窗、脚本编辑框、Log查看窗、设备窗(移动设备连接、windows窗口连接、IOS设备连接)
A、文件
包含新建脚本、打开脚本、保存脚本、脚本另存、最近打开功能;新建脚本时,最好新建.air Airtest项目,可以更方便的键入命令及后续运行脚本;
B、运行
包含运行脚本、停止运行、打开报告目录; 点击打开报告目录可直接打开本条用例的测试报告;
C、Firebase
包含打包测试APK和打包多个脚本; 该功能需要安装java环境,且对于使用过poco框架的脚本不支持打包;目前暂无使用场景
D、窗口
包含恢复默认布局及窗口的全部布局; 有时候关掉了某个窗口就可以来这里打开;
说明:在未连接设备时,辅助窗的部分功能灰显不可用,连接设备后都可正常使用; 官网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")
控件单击
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内等待控件出现,如出现,则进行长按操作
poco框架的导入和airtest框架不一样,当新建一个air脚本时,自动会生成初始代码导入airtest框架,poco框架导入有两种方式
选择辅助窗中的某一平台,编辑框中会提示是否导入框架,点击Yes即可导入且定义
直接代码导入并定义
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
打开你的IDE,点击左上角的 文件--新建脚本--.air Airtest项目
,即可新建一个.air
脚本。
-*- encoding=utf8 -*-
author = "Administrator" #自定义脚本的作者信息
from airtest.core.api import * #导入airtest的主要api
auto_setup(__file__)
Airtest录制模式
录制的脚本并不完全是正确/最优的脚本 ,有时候录制脚本自动生成的截图,并不能很好地回放出来我们想要的操作,这时候我们可以借助Airtest辅助窗的其它快捷键,帮助我们实现更加准确和更加丰富的脚本
Airtest辅助窗的API快捷键
点击快捷键后,进行截图或其他操作,可自动生成代码
Poco一键录制
与Airtest的录制功能相似,Poco录制的脚本也不一定是最优脚本,我们还可以利用辅助窗提供的控件检索功能,来精确定位到每一个控件,查看它的详细属性,依此来编写控件的定位和操作脚本:
Poco辅助窗的API快捷键
双击poco辅助窗中出现的任意节点,则会在辅助窗中显示节点的完全名称
直接编写代码
需要一定的python基础,或者使用命令库可直接复制;
log查看窗有2个功能,1个是在检索控件的时候,查看控件的属性详情,另一个就是在运行脚本的时候查看运行log。
在设备连接窗口,我们可以连接Android真机、模拟器、iOS真机、Windows窗口等多种类型的待测设备
目前主要使用的是连接安卓设备,在远程设备连接中填入要连接的设备的无线IP,点击连接即可连接;
在移动设备连接窗口点击connect,即可打开连接的设备的画面,进行Airtest快捷键操作和Poco快捷键操作;
其他设备连接目前暂未用上,待后续补充
AirtestIDE的主界面是由多个可dock窗口组合而成的,我们可以按照自己的开发习惯和实际需要进行灵活拖拽布局 ,并可以通过下拉菜单 "窗口"-"恢复默认布局" 将内部布局恢复为默认状态。
布局信息会在软件关闭时会自动保存,下次重新启动软件/下载新版本软件使用时,之前的布局记录会自动延续
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。