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. Ubuntu下配置安装telnet server

    1.安装xinetd 以及telnetd # apt-get install xinetd telnetd 2.配置文件/etc/inetd.conf #vi /etc/inetd.conf # St ...

  2. HTML&CSS 问题

    1.子div使用浮动,父div高度自适应(个人感觉好用) 方法: css: <style> .clear{ clear:both} </style> html:在父div关闭之 ...

  3. Eclipse 中打开选中文件/文件夹所在目录

    习惯了使用VS中的 ”通过右键打开选中文件/文件夹在电脑中的目录”功能后, 当切换到Eclipse环境后,发现居然找不到这个功能, 虽可以通过右键文件属性,看到文件路径,复制路径然后在资源管理器中打开 ...

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

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

  5. oracle系列(三)表操作基础

    支持的数据类型: 字符型char 定长 最大2000varchar2() 变长 最大4000clob 字符型大对象 最大4G 数字型number范围 -10的38次方到10的+38次方;number( ...

  6. Java设计模式六大原则-2

    Java设计模式六大原则-2 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...

  7. Javascript混淆与解混淆的那些事儿

    像软件加密与解密一样,javascript的混淆与解混淆同属于同一个范畴.道高一尺,魔高一丈.没有永恒的黑,也没有永恒的白.一切都是资本市场驱动行为,现在都流行你能为人解决什么问题,这个概念.那么市场 ...

  8. 分页插件pagehelper ,在sql server 中是怎么配置的

    <configuration> <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugi ...

  9. Thinkphp5 对接百度云对象存储 BOS (上传、删除)

    首先下载SDK包可以在 官网下载,或者在项目根目录使用composer . composer require baidubce/bce-sdk-php 压缩包里面有五个文件,实际运用到只有两个,然后放 ...

  10. hadoop生态搭建(3节点)-14.redis配置

    # ==================================================================规划node1 redis:7000 7001 192.168. ...