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. 商品数量编辑按钮3D效果动画

    .move-enter-active transition:all 0.4s linear transform:rotate(180deg).move-leave-active transition: ...

  2. CentOS gitlab 安装配置

    CentOS gitlab 安装配置 2018-11-02 11:23:09   Visit  5 在/etc/yum.repos.d 目录下创建文件gitlab-ce.repo,使用国内的安装源 b ...

  3. redis存储数据的时候

    使用redis存储数据的时候,有时候为了查看的方便,通常会有层级或者说是目录, 这时候我们在set的时候,需要将key值使用“:”的符号来区分层级关系,比如:set(“a:b”, “123”),那么在 ...

  4. Linux -- 用户篇

    Linux -- 用户与用户组 1.Linux 系统中有三种角色:所有者(用户),用户组与其他人,一张图可以说明用户与用户组的关系. 如图,某公司相当于一个用户组,该用户组下有A,B两个用户,用户拥有 ...

  5. mysql的InnoDB 数据库引擎TableSpace Exists 问题

    Mysql数据库报错: ERROR 1813 (HY000): Tablespace '`coll`.`t1`' exists. 原因:在使用InnoDB引擎的数据库中,所有已经存在的表都使在使用In ...

  6. Linux 只显示目录或者文件方法

    ls 参数 -a 表示显示所有文件,包含隐藏文件-d 表示显示目录自身的属性,而不是目录中的内容-F 选项会在显示目录条目时,在目录后加一个/ 只显示目录 方法一: find . -type d -m ...

  7. Pycharm常用的快捷键

    常用快捷键: Ctrl + D              复制选定的区域或行 Ctrl + Y               删除选定的行 Ctrl + Alt + L         代码格式化 Ct ...

  8. 正则验证input输入,要求只能输入正数,小数点后保留两位。

    <input type="number" step="1" min="0" onkeyup="this.value= thi ...

  9. [翻译]Hystrix wiki–Home

    注:本文并非是精确的文档翻译,而是根据自己理解的整理,有些内容可能由于理解偏差翻译有误,有些内容由于是显而易见的,并没有翻译,而是略去了.本文更多是学习过程的产出,请尽量参考原官方文档. 什么是Hys ...

  10. 编写radware的负载配置

    radware如何添加负载服务? 笔者在新添加radware的新负载服务的时候,是习惯去看下上一个负载服务的ID 和 节点服务的ID 号 分别是多少,主要是避免ID冲突,把其他服务顶替下去,同时以后这 ...