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

前言

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

看文章之前你需要会的

准备环境

先准备一台安卓手机,电脑上配置好 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 编辑的文件,以及截得图片,最终都会保存在 命令行启动所在的目录下。

热身

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

import atx

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

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

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

截到的图片会保存到本地

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

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 倍的图片长度。

最后点击进入游戏

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

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


↙↙↙阅读原文可查看相关链接,并与作者交流