1-5分钟上手自动化测试——Airtest+Poco快速上手
1 | 5分钟上手自动化测试——Airtest+Poco快速上手
1.1 前言
本文档将演示如何使用Airtest Project专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚本的全流程。强烈建议新手从本文档开始阅读,并使用AirtestIDE上手脚本编写。
1.2 简介
AirtestIDE是一个跨平台的UI自动化测试编辑器,适用于游戏和App。
- 自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程。
- 支持基于图像识别的Airtest框架,适用于所有Android/iOS/Windows应用。
- 支持基于UI控件搜索的Poco框架,适用于Unity3d、Cocos2d与Android/iOS App等多种平台。
- 能够在Windows和MacOS运行。
访问官网通过视频查看更多特性。
通过本教程,你将学会如何上手自动化测试(或者写点脚本来自动玩游戏)。相信我,这个过程会非常愉快~
1.3 安装
目前AirtestIDE提供了Windows和Mac两个版本的客户端,请从官网下载,解压即用。
1.4 连接设备
AirtestIDE目前支持测试Android/Windows/iOS上的应用,其它更多平台的支持正在开发中。
无论是Android/iOS手机,还是Windows窗口,在Airtest中都将它视为一个设备,接下来我们将演示如何连接一个设备。
1.4.1 连接Android手机
通过ADB连接你的电脑和Android手机,即可开始调试Android应用。ADB是Google官方提供的Android调试工具。AirtestIDE依赖ADB与安卓设备进行通信。
打开AirtestIDE,按照以下步骤进行连接:
1、打开手机设置-开发者选项-USB调试开关,参考安卓官方文档;
2、在AirtestIDE设备面板中点击refresh ADB
按钮,查看连接上的设备;
3、如果没有显示出设备,试试restart ADB
,如果还不行,参考FAQ文档进行问题排查;
4、能够成功看到设备后,点击对应设备的Connect
按钮,进行初始化。
手机连接成功后,即可在AirtestIDE中看到手机屏幕的镜像显示,并进行实时操作。
如果手机连接失败,请先参考FAQ文档进行问题排查。若依然不成功,请将手机型号和AirtestIDE后台报错提交到Github Issue,开发人员会尽快修复。由于Android手机的碎片化问题严重,我们非常感谢您的反馈可以帮助这个项目做得更好。
1.4.2 连接Windows窗口
对于Windows桌面程序的测试,AirtestIDE可以将被测窗口嵌入,方便脚本录制和调试。
- 在AirtestIDE设备面板中点击“Windows-框选游戏窗口”按钮。
- 将鼠标移动到被测程序的窗口上,会显示绿色边框,将对应的窗口框出。
- 点击左键即可将对应的窗口嵌入到AirtestIDE中。
如果上述方法不能正确找到被测程序的窗口,你还可以使用备用嵌入方法。
1.4.3 连接iOS手机
要连接一台iOS手机,你需要先准备好一台安装了Xcode的Mac电脑,连接方法参考文档。
1.5 录制自动化脚本
在连上设备后,我们可以开始录制自动化测试脚本了,在接下来的内容中,我们将会使用一台Android设备上的一款Unity游戏应用,给大家演示如何录制脚本。
1.5.1 模拟输入
让我们先从最常用的模拟点击开始吧,模拟点击的意思就是,模仿你的操作去点击设备上的某个指定位置。
(1)基于图像识别
目前我们支持通过图像识别的方式,找到你想要点击的位置并进行操作,这是基于Airtest这个框架实现的。
我们可以先看看如何自动录制脚本:点击AirtestIDE左侧的Airtest辅助窗上的“录制”按钮,然后随着你在设备窗口上操作手机,代码会自动生成在代码窗口中。
马上来验证,点击“运行”按钮运行你的第一个自动化脚本吧!
如果你觉得自动录制生成的图标不够精确,还可以点击Airtest辅助窗上的touch
按钮,然后在设备窗口上框选精确的图标,也可以自动生成一条touch语句。
类似的模拟输入操作还有滑动:点击swipe
按钮,在设备窗口上框选精确的图标作为滑动起点,然后点击滑动终点位置,即会自动生成一个swipe语句。
其它模拟输入的API包括:
- Text:文字输入
- KeyEvent:按键输入,包括(HOME/BACK/MENU等)
- Sleep:等待
- Snapshot:截屏
(2)基于UI控件
如果你发现图像识别不够精确,还可以使用基于UI控件搜索的方式进行自动化测试,与刚才的Airtest不同,这是Poco这个框架实现的功能。
目前Poco直接支持Unity3d、Cocos2d、白鹭引擎等多种游戏引擎,以及Android/iOS原生App。
如果是Android/iOS原生应用,是即插即用的,无需接入SDK。但由于游戏引擎使用OpenGL等图形接口直接渲染,而没有使用Android源生的UI系统,我们需要与游戏的Runtime进行通信获取整个UI结构。
我们提供了非常方便的SDK接入方法,点这里查阅目前支持的平台列表,以及如何为你的项目接入Poco。
如果你的项目使用的引擎或平台不在文档中,我们同样支持自行扩展SDK。
实际上在网易游戏内部,我们就是用这种方式支持了Messiah/NeoX/梦幻等多个自研引擎。
接入完成后我们即可开始。手机启动游戏,在AirtestIDE中的Poco辅助窗切换模式至对应引擎类型,即可看到整个UI结构。
点击“录制”按钮,然后随着你的鼠标操作,会自动生成Poco语句到脚本编辑框中。
同样,你也可以通过UI树形结构更精确的检视UI控件,双击节点自动生成Poco语句,或者自行选择更好的写法。
自动录制出的语句不一定能够适应所有场景,采用更合理的选择器编写代码,通常会增强整个自动化脚本的健壮性和可读性,这是门学问。
录制完脚本后记得运行试试效果。
对于Android/iOS的原生应用来说,不需要接入SDK即可使用,例如在连上Android手机后,将Poco辅助窗的模式切换至Android,能可以看到整个UI树形结构。
1.6 框架信息
上述两种UI识别方式,分别是基于两个框架:
- 基于图像识别的Airtest框架
- 基于UI控件搜索的Poco框架
这两个框架都是由我们团队开发的Python第三方库,在实际项目使用经验中,我们发现两者互相配合会得到最好的效果。在脚本编写的过程中,我们往往也需要查阅它们的项目API文档。
1.7 使用Python语法
整个AirtestIDE中录制和运行的代码都是基于Python语言。Python语法简洁而强大,第三库和工具也非常多。
对于新手,Python上手非常容易,学会基本语法即可写出自动化脚本中所需的逻辑语句。
touch("开卡包.png")
if exists("奖励面板.png"): for i in range(5): Poco("奖励-%s" % i).click()
对于老手,你可以在AirtestIDE中使用各种第三方库来使你的自动化脚本更加强大,通过添加PYTHONPATH设置,可以使用本地的Python.exe来运行你的脚本。
除了辅助窗口里面提供的语句,更多的API文档,可以查看Airtest和Poco的仓库。
1.7.1 断言
到这里,我们已经有各种模拟输入方法,配合逻辑控制语句让手机动起来。自动化测试中还有很重要的一个步骤:结果验证,那么我们来看看怎样声明断言。
(1)验证UI界面
录制方法与模拟输入类似。
- assert_exists:断言图片存在
- assert_not_exists:断言图片不存在
(2)验证数值
通过Poco获取属性值,手写代码进行断言。
- assert_equal:断言相等
- assert_not_equal:断言不等
例如:
# ... 模拟输入并获得20分之后value = Poco("分数按钮").attr("num")
assert_equal(value, 20, "获到20分")
1.8 查看测试报告
脚本运行完毕后,点击“查看报告”按钮(快捷键Ctrl+L),会使用默认浏览器打开结果报告页面。报告中将展示出每一个步骤的内容和实际执行过程的截图、运行结果,方便查看步骤是否执行成功。
1.9 命令行接口
现在,你已经学会自动化测试了。接下来呢,你可以使用命令行接口将自动化测试与持续集成结合起来。持续集成是什么?
在AirtestIDE运行脚本时,Log窗口中会打印运行命令。
你可以在不开启IDE的情况下,在命令行中使用那条命令来启动测试脚本,例如:
"D:\迅雷下载\AirtestIDE\AirtestIDE" runner "D:\AirtestIDE_2018-01-24_83\untitled.air" --device Android://127.0.0.1:5037/F8UDU16409004135 --log "C:\Users\gzliuxin\AppData\Local\Temp\AirtestIDE\scripts\cdfc40e8c297b6ad88e09de64d8bafa3"
使用AirtestIDE你可以轻松地录制出测试脚本,保存为.air脚本。请注意一个.air脚本中不要包含太多内容,用良好的脚本命名和目录结构来组织你的脚本,覆盖所有测试点。
你还可以在不同电脑上针对不同设备运行测试,这时候你就需要用命令行运行 .air 脚本 。对于多平台发布的产品,灵活使用跨平台API和命令行,还可以让同一套测试脚本运行在Android和Windows上进行测试。
转载于:https://www.cnblogs.com/ShineLeem/p/11325990.html
1-5分钟上手自动化测试——Airtest+Poco快速上手相关推荐
- 一、自动化测试——Airtest+Poco快速上手
1.前言 本文档将演示使用AirtestProject专用的编辑器AirtestIDE,编写Airtest+Poco自动化脚本的全流程.强烈建议新手从本文档开始阅读,并使用AirtestIDE上手脚本 ...
- 【零基础上手JavaWeb】07 快速上手 XML解析方法
写在前面,大家好!我是[跨考菌],一枚跨界的程序猿,专注于后台技术的输出,目标成为全栈攻城狮!这博客是对我跨界过程的总结和思考.如果你也对Java.后端技术感兴趣,抑或是正在纠结于跨界,都可以关注我的 ...
- 「自动化测试」新一代 Web 前端自动化测试框架 —— playwright 快速上手,轻松带入项目
playwright上手 内网如何安装项目依赖 注意:想运行 playwright需要下载相关浏览器的二进制文件 由于默认情况下,Playwright 会从 Microsoft CDN 下载浏览器二进 ...
- python游戏编程快速上手pdf_Python游戏编程快速上手 (斯维加特著) 中文pdf完整版[18MB]...
Python是一种高级程序设计语言,因其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言.Python游戏编程快速上手通过编写一个个小巧.有趣的游戏来教授Python编程,并且采用直接展示了游戏 ...
- 3分钟学会SVN:SVN快速上手
选择SVN客户端 Windows平台 TortoiseSVN:也叫乌龟SVN,Windows上最流行的SVN客户端,安装后你的右键就会多了几个SVN相关的菜单,非常方便 Eclipse插件:在Ecli ...
- RK3588快速上手 | 01-RK3588开发板快速上手
文章目录 一.RK3588与RK3399 1. 简介 2. 整体框图 3. RK3588典型应用框图 二.Firefly RK3588开发板 1. Core-3588J核心板 2. ITX底板 3. ...
- PyTorch 分布式训练DDP 单机多卡快速上手
PyTorch 分布式训练DDP 单机多卡快速上手 本文旨在帮助新人快速上手最有效的 PyTorch 单机多卡训练,对于 PyTorch 分布式训练的理论介绍.多方案对比,本文不做详细介绍,有兴趣的读 ...
- objective-c 2.0编程语言,Objective-C 2.0编程快速上手 EXE版[12MB]
Objective-C 2.0编程快速上手 内容简介: <Objective-C 2.0编程快速上手>是介绍Objective-C编程的基础教程.全书采用实例讲解.按部就班的方式,全面详细 ...
- 一、快速上手SpringBoot
一.快速上手SpringBoot 一.快速上手SpringBoot 1.SpringBoot快速入门(一) 2.SpringBoot快速入门(二) 3.SpringBoot快速入门(三) 4.Spri ...
最新文章
- mysql 5.7优化不求人_《MySQL 5.7优化不求人》直播精彩互动
- 解释ROM、RAM、SRAM、DRAM与FLASH在使用上的区别及其原因
- demod函数_MATLAB信号处理工具箱函数 | 学步园
- oracle 执行java_oracle调用JAVA类的方法
- elasticsearch运维实战之2 - 系统性能调优
- ICE专题:ICE简介
- ncurses输出函数:字符+字符串的输出
- POJ3169 Layout(差分约束)
- 彻底理解数字图像处理中的卷积-以Sobel算子为例
- 学生计算机 在线使用,中学生计算机基础教程
- 一江春水向东流 任正非
- 计算机中堆栈指针的作用,堆栈指针是什么_有什么作用
- 用UCWEB浏览器上网 省流量小技巧
- EDTA 最简易安装方法
- 怎么在视频上叠加字幕和Logo--技术实现2
- GMS2(Gamemaker Studio 2)运行工程时遇到的问题解决
- Windows 下编译 EXE 文件时把一个外部 txt 文件编译到 EXE 里面
- JavaBean的书写规范
- 苏州新导化工厂人员定位系统功能真的如此强大?当然强大,定位准确
- threejs使用精灵图添加图片贴图
热门文章
- python处理字体(动态字体库)
- 加州大学圣地亚哥分校计算机科学排名,加州大学圣地亚哥分校UCSD计算机科学Computer Science专业排名第37位(2021年THE世界大学商科排名)...
- 订单(一)——准备订单数据
- CPU占用率过高的原因和后果
- evak购物车--团队博客
- 迅雷7 down.php,普通文件与迅雷、旋风、快车、RayFile的下载地址转换算法
- elasticsearch分词练习、自定义分词器练习
- Python包中__init__.py文件的作用和用法
- 【笔记:Spring】
- 王牌竞速安装后显示服务器维护,王牌竞速服务器进不了 服务器登录问题详解...