MonkeyRunner 录制脚本啦

版权声明:

本公众号发布的所有文章,均属于原创,版权归本公众号所有。

允许有条件转载,转载请附带底部二维码。

一、前言

还记得前几天推送的文章《Android压力测试之MonkeyRunner》提到过,实际上MonkeyRunner (下文简称 MR ) 除了可以纯手工利用 Python 编写脚本之外,还可以录制脚本,并回放脚本。

那么本片文章,就以这个主题,全面带你了解如何使用 MR 录制脚本,并且回放脚本的形式,来做自动化的测试。

使用 MR 需要的环境,Python 2.7 、ADB 等,都请自行配置,这里不再进行讲解。

二、MonkeyRunner 录制脚本

不知道出于什么目的,Google 对 Monkey 系列的很多功能,都进行了隐藏。从 Monkey Script 到 MonkeyRunner 录制脚本,这些功能都被隐藏掉了。但是依然可以从源码里找到蛛丝马迹。

MR 是依赖 Python ,并使用 Jython 来解释脚本,而我们用到的 MR 录制和回放功能,也是需要依赖两个 Python 脚本的。

  • monkey_recorder.py:录制
  • monkey_playback.py:回放

这两个脚本和 MR 脚本的执行一样,使用 monkeyrunner 命令既可执行,其内容之后会介绍到。

1、录制

录制 MR 脚本,可以使用命令:

monkeyrunner monkey_recorder.py

执行完成之后,会启动一个 MonkeyRecorder 的窗口。

MonkeyRunner 录制脚本啦

在 MonkeyDecorder 窗口里,可以看到当前连接设备的一个展示效果,在其上有一些功能按钮,用于我们录制脚本。下面我们来详细讲解这些按钮的含义。

1.Wait

Wait 按钮,用于在多个操作之间,设置一个停顿,注意这里的停顿设置的暂停时间,单位是秒(s)。这个 Wait 的功能非常的有用,如果太快速的操作,对于自动化而言,基本上就是一闪而过。有时候需要一些等待的时间来让程序响应。

MonkeyRunner 录制脚本啦

2.Press a Button

Press a Button 用于模拟一个设备上的按键操作。当然也只是支持一些常规的 按钮。

MonkeyRunner 录制脚本啦

3.Type Something

Type Something 按钮,可以用于录入一个字符串,一般用于模拟输入。

MonkeyRunner 录制脚本啦

4.Fling

Fling 按钮,用于模拟一个滑动操作。

MonkeyRunner 录制脚本啦

5.Export Actions

Export Actions 按钮,用于保存之前一系列的操作。保存的脚本,后缀为了标识清楚,一般可以使用 .mr 或者 .script,都可以,没有强制要求。

6.RefreshDisplay

这个没什么好说的,如果遇上 MonkeyDecoreder 显示的图像和设备上不符合,可以点此按钮进行刷新。

2、回放

将录制好的脚本,通过 Export Actions 以脚本的形式保存到本地之后,就可以通过 monkey_playback.py 脚本进行回放了。回放功能会将之前录制好的操作,原样返回到设备中去。

monkeyrunner monkey_playback.py <script.mr>

三、手把手录制一个脚本

既然都介绍了 MR 录制脚本需要用到的一些工具和脚本,接下来我们就可以开始实际录制一个脚本,来看看录制的流程,跟好的理解问题。

首先我们需要设计好需要录制的操作,这个和之前 MonkeyRunner 手写的脚本逻辑一样。

操作步骤:

  1. 在用户明对话框,输入:abcd
  2. 在密码框中,输入:1234
  3. 点击 Login 按钮。

在这些操作的空隙内,暂停 1s ,以方便我们看到步骤在执行。

1、开始录制脚本

执行 monkey_recorder.py 去打开 MonkeyRecorder 窗口,进行操作。

MonkeyRunner 录制脚本啦

从上面的步骤可以看出来,每次的操作,右边就出现对应的的脚本,可以看到之前的步骤。因为录屏工具的缘故,在 gif 图中,并没有实时刷新 UI ,但是实际上是会自动刷新的。

录制好的脚本,就可以以脚本的形式保存到本地。就可以在需要回放的时候使用了。

2、回放脚本

既然已经保存了我们需要的回放的脚本。那么就可以直接回放了。也没什么需要注意的,输入命令即可。

monkeyrunner monkey_playback.py <script.mr>

按照脚本回放之后,就可以在设备上,看到正在回放我们之前录制好的脚本了。

3、录制的脚本

最后再来阅读一下,之前录制好的脚本。

MonkeyRunner 录制脚本啦

语法非常的简单,大概能猜出来在干什么,无非是对一些坐标点进行点击,输入了message子类的。如果熟练的话,录制的脚本是可以自行修改的,避免有一点错漏而导致完全重新录制,可以将多次录制的结果,拼接在一起。

四、录制和回放的源码

既然都是用 Python 脚本写的,我们可以研究一下它的源码的。

monkey_recorder.py 的远吗非常的简单。

MonkeyRunner 录制脚本啦

可以看到,实际上有效的代码就是,recorder.start 这一句。

而 monkey_playback.py 的代码就比较多了,需要对录制好的脚本进行解析。

MonkeyRunner 录制脚本啦

五、结语

MR 就是一个基于坐标的自动化测试方案,对于录制好的脚本,它并不知道是在测试什么,所以在运行脚本之前,需要手动打开我们的待测试 App。

公众号的文章,为了排版清晰,代码都是使用的图片。如果需要相关脚本的文件,可以在本公众号回复关键字『 mr录制 』,得到相关 Python 脚本和本文中测试的App。

既然都看到这里了,顺手一下吧。

MonkeyRunner 录制脚本啦

相关文章: