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://v.qq.com/x/page/m08362jsooz.html

脚本源码:https://github.com/songzhenhua/airtest

AirtestIDE实践一:梦幻西游手游师门任务自动化的更多相关文章

  1. 为测试赋能,腾讯WeTest探索手游AI自动化测试之路

    作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处.  WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...

  2. Unity手游引擎安全解析及实践

    近日,由Unity主办的"Unity技术开放日"在广州成功举办,网易移动安全技术专家卓辉作为特邀嘉宾同现场400名游戏开发者分享了网易在手游安全所积累的经验.当下,很多手游背后都存 ...

  3. AirtestIDE实践二:Poco框架试用

    上一篇用airtest框架做了一个梦幻西游手游的DEMO,这次看看poco的强大之处.首先安装poco:pip install pocoui 其次,把SDK集成到你家游戏中,我这直接用官网提供的一个U ...

  4. 手游录屏直播技术详解 | 直播 SDK 性能优化实践

    在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...

  5. 开源工具 | 手游自动化框架GAutomator,新增iOS系统和UE4引擎支

    WeTest 导读 GAutomator是腾讯WeTest推出的手游自动化测试框架,已用于腾讯多个手游项目组的自动化测试. 1.GAutomator诞生背后 研究过手游自动化测试的同学都知道,虽然市场 ...

  6. Unity3D手游开发实践

    <腾讯桌球:客户端总结> 本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身.虽然基于Unity3D,很多东西同样适用于Cocos.本文从以下10大点进行阐述: 架构设计 原生插件/ ...

  7. (转)Unity3D手游开发实践

    作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). (转)& ...

  8. 手游与App测试如何快速转型? —— 过来人科普手游与App测试四大区别

    随着智能设备的普及和移动互联网的兴起,各家互联网巨头纷纷在往移动端布局和转型,同时初创的移动互联网公司也都盯着这个市场希望分一杯羹.在这个大环境下,互联网的重心已经慢慢从Web端转向了移动端,而移动端 ...

  9. 【转载】浅谈游戏开发之2D手游工具

    浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android  程序设计: 其它  编程语言:   引擎/SDK ...

随机推荐

  1. Redis数据类型(下)

    集合Set    Redis 的集合不是 个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来 存储和查找数据,理论上 个集合可以存储 232 (大约 42 亿)个元素,因为采用哈希表结 ...

  2. Android 复制 粘贴 剪贴板的使用 ClipboardManager

    Copy and Paste 版本:Android 4.0 r1  快速查看 用于复制粘贴数据的基于剪贴板的框架. 同时支持简单和复杂的数据,包括文本串.复杂的数据结构.文本和二进制流数据.程序 as ...

  3. SQLserver高级编程

    1.数据库设计 数据库设计的重要性: 减少冗余,提高性能.易维护 数据库设计的步骤: 1.收集信息.标识对象.标识属性.标识关系(一对一.一对多.多对一.多对多) E-R图: 属性:定义实体的性质.实 ...

  4. JQuery手写一个简单的分页

    效果图: 大概思路:使用ul进行初始布局,每一次点击事件改变li里的值.完整的代码在gitup上:https://github.com/anxizhihai/Paging.gitcss部分: html ...

  5. 使用PIE.htc让万恶的IE内核浏览器IE6\7\8支持CSS3部分属性

    万恶的IE内核浏览器,这是多少前端程序员头疼的事情... 今天给大家介绍一下如何用 PIE.htc 来让IE浏览器支持CSS3的 border-radius.box-shadow.CSS3 Backg ...

  6. 一点一点看JDK源码(五)java.util.ArrayList 后篇之sort与Comparator

    一点一点看JDK源码(五)java.util.ArrayList 后篇之sort与Comparator liuyuhang原创,未经允许禁止转载 本文举例使用的是JDK8的API 目录:一点一点看JD ...

  7. IOS 枚举 enum

    前言:oc中枚举的正确使用,可以增强代码的可读性,减少各种“错误”,让代码更加的规范.下面先介绍枚举的用法,最后介绍个人对枚举的理解,什么是枚举,为什么用枚举. 一. OC中,枚举的使用 1. 写法1 ...

  8. tornado用户指引(四)------tornado协程使用和原理(三)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/happyAnger6/article/details/51291221几种常用的协程方式: 1.回调 ...

  9. IDELPHI是一个MIS系统初学者的乐园空间

    DELPHI的长处之一是MIS系统,此空间介绍了MIS中种种问题,及使用DELPHI XE做的办法. 为什么选择DELPHI? DELPHI是开发效率很高的一个工具,但也许很多人都喜欢选择微软.NET ...

  10. 利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...