Airtest Project 是网易自研的游戏自动化项目.
Airtest IDE 是这个项目的一个 IDE, 就像 Eclipse,Pycharm 一样, 是一个集成开发工具.
Airtest 框架是一个基于 OpenCV 的图像识别自动化框架, 可以用于所有平台.
Poco 框架是一个类似于 Appium 的主打游戏自动化框架, 支持 Unity3D,Cocos2dx 等游戏引擎 (需要接入 Poco-SDK), 也可以用于 Android 原生 App 测试 (不用接 SDK 直接用).
Airtest 的简介, 安装, 使用, 详解, 我在这里就不过多介绍了, 大家可以去官网自己看, 中文的, 文档, 视频, 动图都有, 简单易懂. http://airtest.netease.com/
先说一下个人感受 (仅供参考):
一, 如果你要用 Airtest 框架对游戏做纯图像识别的自动化, 我个人认为还不如用更专精的, PC 上可以用老牌的按键精灵, 我放 2 个按键精灵的教程, 大家可以看一下, 比 Airtest 专业:
中级教程 -- 如何找色, 找图, 找字
http://bbs.anjian.com/showtopic-104968-1.aspx
中级教程 -- 坐标, 色值以及按键抓抓的详解
http://bbs.anjian.com/showtopic-182149-1.aspx
如果是手游, 按键精灵也支持; 另外也有专攻手游的触动精灵, 叉叉助手, 他们的教程也很详细, 论坛上还有脚本源码分享:
- http://www.touchsprite.com/
- http://dev.xxzhushou.cn/
二, 如果你要做手机原生 App 的自动化, 跨平台大家用的最多的 Appium, 安卓的可以用 Robotium.
三, 如果你要做 web 自动化, selenium 不用我说了吧, 另外推荐 Katalon, 支持 POM, 录制, 我之前的文章有介绍.
四, 如果你家游戏可以接入 Poco-SDK, 推荐 Airtest, 可以让你像测原生 App 一样测试游戏. 腾讯也有一款相同的产品: GAutomator.
所以, Airtest 现在的优势还是 Poco, 如果你家产品不好定位或有特殊需求, 导入 airtest 包作为辅助也是可以的. 当然 Airtest 也是一直在不断发展的, 也许将来在某个领域也会更好用, 超越老工具.
转入正题, 原来我是打算用模拟器的, 下了网易自家的 MUMU, 结果 Airtest IDE 竟然和 MUMU 有兼容问题, 问了网易的开发, 最新的 MUMU 版本确实有兼容问题, 懒得折腾了, 直接烧我的小米吧 (搞半小时绝对可以煎鸡蛋了), 结果我的小米也有兼容问题, 不能用单步调试功能...... 还给他们报了个 BUG,https://github.com/AirtestProject/Airtest/issues/257
脚本中用的最多的 2 个 API:touch(点击),exists(判断图像是否存在, 存在返回坐标, 不存在返回 false)
使用方法也很简单, 如图:
《梦幻西游手游》龙宫师门任务自动化脚本的思路即是循环每次点任务栏自动去做任务, 然后根据不同的任务会触发显示不同的图片, 分别判断是哪个图片出现, 然后进行具体的操作. 下面逐行解析一下:
mission_location = (2284,445)
先定义一个坐标点, 即右侧任务栏的坐标, 师门任务一般是第一个. 这里没法用图像识别, 任务栏全是文字, 没有高标识的图像, 而且是背景透明的.
touch(mission_location, times=2)
有时送信任务做完会有对话框, 双击, 一次关闭对话框, 一次领任务; 如果没有对话框, 双击也是领任务.
下面就是各个分支了, 概率比较大的分支放上面, 可以提高效率:
分支一: 如果出现聚水珠, 则点击使用.
分支二: 如果有齿轮图标, 说明进入了战斗; 那么每隔 10 秒再去判断一下齿轮还在不, 不在的话即是战斗完成, 跳出循环, 继续接师门任务.
分支三: 如果出现购买, 则点击一次购买. 小几率会出现商品在你点购买之前被别人买走了, 会导致购买失败, 所以继续判断购买是否存在, 存在就选中第一个物品再买一次, 否则进入上交的循环 (买完东西要上交给师傅). 当上交存在时, 点击上交, 然后继续接师门任务.
分支四: 有时送信的 NPC 本身还会有其他事件, 需要让你选师门任务选项, 所以如果存在就点击一下.
分支五: 同分支三, 有时要购买的东西正好包里有, 就不用买了, 直接上交即可.
分支六: 做完当天的 20 个师门任务时, 会弹确认框, 告之如果再做就没有额外经验了, 此时播放一个 MP3, 通知任务做完.
脚本运行完后, 点工具栏上的 LOG 图标, 会生成并打开报告, 在这我们可以看到脚本运行时点击的位置, 如图
报告是存放在 Temp 文件夹下, 所以如果要长久保存的话, 需要额外复制一下.
试用了 4 天, 基本可以顺利做完, 当然, 肯定还有其他一些突发事件我没有兼容, 比如活动弹框, 被别人强行拉队, 特殊的通知等. 另外这么复杂的师门任务, 脚本这么简单, 也全靠手游本身的自动寻路, 半自动任务所赐, 如果是在端游上, 工作量就巨大了.
放上回放脚本时的录制视频, 大家可以感受一下: 视频审核中
脚本源码: https://github.com/songzhenhua/airtest
来源: http://www.bubuko.com/infodetail-2946180.html