zoukankan      html  css  js  c++  java
  • 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

    ---------------------------------------------------------------------------------

    关注微信公众号即可在手机上查阅,并可接收更多测试分享~

  • 相关阅读:
    采用springboot+flowable快速实现工作流
    07 Sublime Text3常用快捷键
    06 解决Sublime Text3输入法不跟随的问题
    04 Storage and Calculation C语言中的存储和计算
    05 sublime环境配置及编译运行后输出中文乱码的解决
    04 sublime text 3在线安装package control插件,之后安装主题插件和ConvertToUTF8 插件
    03 sublime text3下配置Java的编译运行环境
    02 sublime text3下配置Python的编译运行环境
    01 sublime text3下配置c/c++ 的编译运行环境
    03 Comments in C Programming C编程中的注释
  • 原文地址:https://www.cnblogs.com/songzhenhua/p/10353982.html
Copyright © 2011-2022 走看看