AirtestIDE实践一:梦幻西游手游师门任务自动化
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实践一:梦幻西游手游师门任务自动化的更多相关文章
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
- Unity手游引擎安全解析及实践
近日,由Unity主办的"Unity技术开放日"在广州成功举办,网易移动安全技术专家卓辉作为特邀嘉宾同现场400名游戏开发者分享了网易在手游安全所积累的经验.当下,很多手游背后都存 ...
- AirtestIDE实践二:Poco框架试用
上一篇用airtest框架做了一个梦幻西游手游的DEMO,这次看看poco的强大之处.首先安装poco:pip install pocoui 其次,把SDK集成到你家游戏中,我这直接用官网提供的一个U ...
- 手游录屏直播技术详解 | 直播 SDK 性能优化实践
在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用 ...
- 开源工具 | 手游自动化框架GAutomator,新增iOS系统和UE4引擎支
WeTest 导读 GAutomator是腾讯WeTest推出的手游自动化测试框架,已用于腾讯多个手游项目组的自动化测试. 1.GAutomator诞生背后 研究过手游自动化测试的同学都知道,虽然市场 ...
- Unity3D手游开发实践
<腾讯桌球:客户端总结> 本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身.虽然基于Unity3D,很多东西同样适用于Cocos.本文从以下10大点进行阐述: 架构设计 原生插件/ ...
- (转)Unity3D手游开发实践
作者:吴秦出处:http://www.cnblogs.com/skynet/本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名吴秦(包含链接). (转)& ...
- 手游与App测试如何快速转型? —— 过来人科普手游与App测试四大区别
随着智能设备的普及和移动互联网的兴起,各家互联网巨头纷纷在往移动端布局和转型,同时初创的移动互联网公司也都盯着这个市场希望分一杯羹.在这个大环境下,互联网的重心已经慢慢从Web端转向了移动端,而移动端 ...
- 【转载】浅谈游戏开发之2D手游工具
浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android 程序设计: 其它 编程语言: 引擎/SDK ...
随机推荐
- 计算机网络概述4_性能指标之时延,时延带宽积,往返时间RTT,利用率
发送时延(传输时延):从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需的时间. 总结:
- Sublime Text 3 for Mac 3176 序号版
—– BEGIN LICENSE —–sgbteamSingle User LicenseEA7E-11532598891CBB9 F1513E4F 1A3405C1 A865D53F115F202E ...
- 给windows添加路由
route add 10.0.0.0 mask 255.0.0.0 172.16.1.253 -p
- [转] 有关java中两个整数的交换问题
转载申明:本文主要是用于自己学习使用,为了完善自己的只是框架,没有任何的商业目的. 原文来源:有关Java中两个整数的交换问题 如果侵权,麻烦告之,立刻删除. 在程序开发的过程,要交换两个变量的内容, ...
- Gradle Goodness: Running Java Applications from External Dependency
With Gradle we can execute Java applications using the JavaExec task or the javaexec() method. If we ...
- flask模板语言,装饰器,路由及配置
1.模板语言jinja2 Flask中默认的模板语言是Jinja2 1.0 模板传参 from flask import Flask,render_template app = Flask(__nam ...
- sudo命令: 在其他用户下操作root用户权限
一. 场景: 在某个远程服务器 A 上,用 账户1 登陆, 想要在root用户的目录下创建一个 .sh文件, 如果直接 用 touch test.sh 创建,会提示权限不足 此时可以用sudo命令: ...
- 【模板】BM算法(找线性规律万能模板)
(1) n是指要找该数列的第n项. (2) 往vec中放入该数列前几项的值,越多越精确. #include<set> #include<cmath> #include<v ...
- Linux下Git远程仓库的使用详解
Git远程仓库Github 提示:Github网站作为远程代码仓库时的操作和本地代码仓库一样的,只是仓库位置不同而已! 准备Git源代码仓库 https://github.com/ 准备经理的文件 D ...
- linux系统常用命令统计及shell特殊字符
shell 特殊字符:1.通配符2.管道 1.通配符 1.1星号(*):匹配任意长度 1.2问号(?):匹配一个长度的字符 1.3方括号([......]):匹配其中指定的字符 1.4方括号([-]) ...