python写梦幻西游手游脚本_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
---------------------------------------------------------------------------------
关注微信公众号即可在手机上查阅,并可接收更多测试分享~
python写梦幻西游手游脚本_AirtestIDE实践一:梦幻西游手游师门任务自动化相关推荐
- python接收微信消息_【Python写微信防撤回脚本】02 接收记录聊天信息
上一期我们安装好了ItChat,并且学会用它登录微信.想知道它还能做什么?往下滑吧~ 接收好友信息 利用ItChat登录微信之后,我们就可以自动记录好友发来的信息. 话不多说,直接上代码: impor ...
- python怎么写测试脚本语言_手把手带你,用Python写一个Monkey自动化测试脚本!!!...
一.为什么需要一个测试脚本? 之前讲解了 Android Monkey 命令的使用方式,今天趁着还热乎就手把手用 Monkey 写一个压力测试的脚本.还不了解什么是 Monkey 的,可以看看之前的文 ...
- python 写的一些ctf脚本
python 写的一些ctf题脚本记录 文章目录 python 写的一些ctf题脚本记录 misc 16进制 凯撒 4进制 置换密码 Unicode web计算 rsa base64实现 sql注入布 ...
- 梦幻西游python验证成语_GitHub - rowliner/mhxy: tensorflow实践:梦幻西游人物弹窗识别...
mhxy tensorflow实践:梦幻西游人物弹窗识别 环境描述 C:\Users\SF>ver Microsoft Windows [版本 10.0.18363.720] C:\Users\ ...
- python 梦幻西游_GitHub - BestBurning/mhxy: tensorflow实践:梦幻西游人物弹窗识别
mhxy tensorflow实践:梦幻西游人物弹窗识别 环境描述 C:\Users\SF>ver Microsoft Windows [版本 10.0.18363.720] C:\Users\ ...
- 用python写一个排班脚本
好的,我们可以使用 Python 来写一个排班脚本.首先,我们需要定义一些变量来存储排班信息,比如每个员工的名字.可以工作的时间段等. 下面是一个简单的例子,假设我们有三个员工,他们的名字分别是 &q ...
- 用python写一个抢购的脚本
好的,这是用 Python 写的一个抢购的脚本的示例: import requestsdef main():# 在这里输入你的抢购商品的 URLurl = "http://www.examp ...
- 用python写一个抢票脚本
写一个抢票脚本需要了解一些网络爬虫的知识,以及如何使用 Python 进行网络请求. 首先,你需要找到票务网站的 API,并了解其请求方式.请求参数等信息.然后,你可以使用 Python 的第三方库如 ...
- 用python写全自动赛马娘脚本 全自动赛马娘脚本 Auto_Pretty Derby
用python写赛马娘脚本 全自动赛马娘脚本 Auto_Pretty Derby 先放上用脚本训练的成果 其实我一开始有一个想法就用python 去写一个模拟器脚本 但是大家都知道赛马娘 培养具有很多 ...
- python写淘宝秒杀脚本_python实现淘宝秒杀脚本
本文实例为大家分享了python实现淘宝秒杀脚本的具体代码,供大家参考,具体内容如下 1.安装pycharm.网上教程很多. 2.安装 Selenium 库. Selenium支持很多浏览器,我选择的 ...
最新文章
- Error:org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to
- 两个类相互包含引用的问题--类前向声明
- activiti 5.15.1 动态手动通过java编码方式,实现创建用户任务,动态指定个人,用户组,角色,指定监听的实现...
- 佩珀代因大学计算机科学专业,佩珀代因大学计算机科学与数学本科专业.pdf
- 【问题记录】raise IndexError(‘index {} is out of range‘.format(idx)) index 0 is out of range
- elk 搜索 语法_ELK:kibana使用的lucene查询语法
- (精华)转:RDD:创建的几种方式(scala和java)
- vi交互式批量替换 vi批量替换 vi查找和替换
- 两个摄像头合成一路_教你把一个摄像机添加到两台录像机
- centos7下安装mysql8社区版的过程,20200129
- 洛谷——P1897 电梯里的爱情(两种解法:普通方法、桶排序方法)
- ASP.Net 中常用的数据库连接方式
- redis 永不过期_Redis系列八Redis数据过期策略详解
- python的对文档密码的简单破解
- vue-cli 脚手架安装
- 统计学---总体与样本
- 交互式电子杂志_HUAWEI Magazine电子杂志阅读平台上线
- centos下zip压缩解压缩命令
- 2-5 K8s图形化管理界面dashboard
- 细粒度分类之NTS_NET解读