ATX 系列 – 如何测试网易游戏阴阳师 (Android 篇)

本帖已被设为精华帖!,

这是一篇教你如何使用AutomatorX做游戏测的文章,当然这个自动化测试框架不限定于阴阳师,你可以参考文章提到的方法做其他游戏的测试。为了方便,后面AutomatorX我都简称为ATX

前言

突然意思到ATX还没有出过一篇关于游戏测试的文章,比较讽刺的是ATX一开始设计的时候,就是为了游戏而设计的。不多说了,赶紧开写。

看文章之前你需要会的

  • 命令行的简单操作
  • 基础的Python

准备环境

先准备一台安卓手机,电脑上配置好Python环境。
根据 ATX官方主页上的说明,把环境配置好。 https://github.com/NetEaseGame/AutomatorX

需要用到的apk文件直接从阴阳师的官方首页上下载 http://yys.163.com/
打开控制台,接下来我们需要分析安装包的包名以及activity名

$ python -matx apkparse onmyoji_netease_1.0.7.apk
{
"main_activity": "com.netease.onmyoji.Launcher",
"package_name": "com.netease.onmyoji"
}

接下来有请我们要介绍下有ATX团队最新开发的,web-ide编辑器,有了它,脚本写起来快的可以飞起来。
安装方法参考 https://github.com/openatx/atx-webide

装完之后,cd到工作目录。
使用命令 python -m atxweb 启动之后,浏览器会自动打开,进入到编辑器界面。如下图所示。

根据图片中的提示选择设备,切换到Coding标签。网页版IDE编辑的文件,以及截得图片,最终都会保存在 命令行启动所在的目录下。

ATX 系列 - 如何测试网易游戏阴阳师 (Android 篇)

热身

接下来就可以开始写我们的第一行代码了

import atx

d = atx.connect()
print 'start time:', d.start_app('com.netease.onmyoji', 'com.netease.onmyoji.Launcher')

代码的作用,就是启动阴阳师这个应用,顺便统计出,启动的用时

在Screen区域拖动选中要截取的图片。比如

ATX 系列 - 如何测试网易游戏阴阳师 (Android 篇)

截到的图片会保存到本地
ATX 系列 - 如何测试网易游戏阴阳师 (Android 篇)

继续添加代码,来用脚本跳过游戏的自动更新

d.click_image(u"确定.1920x1080.png", timeout=8, safe=True)

timeout代表最多等待8s,safe=True表示,即使图片没有找到也不报错

登录游戏

自动登录这部分大部分都是UI操作,需要用到uiautomatorview这个工具。在platform-tools这个目录下可以找到,更多的介绍可以看这篇文章:如何测试网易云音乐 (Android 篇),这里不做详细说明了。

下面直接贴出完整的进入游戏的代码

d(text='快速游戏').sibling(className='android.widget.ImageView').click()
d(text='快速游戏').click()
d.click_image(u"进入游戏.1920x1080.png") # 这个需要截图了
d(textMatches='接\s*受').click() # 因为“接受”之间可能会有空格影响

接下来需要输入角色名了,为了方便生成昵称,我们把这段代码加上去

import random, time, string
random.seed(time.time())

def id_generator(size=8, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))

接下来,通过这几行代码完成角色的创建

d.click_image(u"random2.1920x1080.png", offset=(1.2, 0))
d.clear_text()
d(text='确定').click()
d.click_image(u"创建角色.1920x1080.png")

代码中用到了offset,代码具体的实现的流程是,先找到图片的位置,然后向右偏移1.2倍的图片长度。
ATX 系列 - 如何测试网易游戏阴阳师 (Android 篇)

最后点击进入游戏
ATX 系列 - 如何测试网易游戏阴阳师 (Android 篇)

d.click_image(u'进入游戏.1920x1080.png')

先写到这里了,后面会继续补充

* 注:本文来自网络投稿,不代表本站立场,如若侵犯版权,请及时知会删除