版权声明:
本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。
未经允许,不得转载。
一、前言
还记得前几天推送的文章《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 的窗口。
mr-dialog.png在 MonkeyDecorder 窗口里,可以看到当前连接设备的一个展示效果,在其上有一些功能按钮,用于我们录制脚本。下面我们来详细讲解这些按钮的含义。
1.Wait
Wait 按钮,用于在多个操作之间,设置一个停顿,注意这里的停顿设置的暂停时间,单位是秒(s)。这个 Wait 的功能非常的有用,如果太快速的操作,对于自动化而言,基本上就是一闪而过。有时候需要一些等待的时间来让程序响应。
mr-wait.png2.Press a Button
Press a Button 用于模拟一个设备上的按键操作。当然也只是支持一些常规的 按钮。
mr-press.png3.Type Something
Type Something 按钮,可以用于录入一个字符串,一般用于模拟输入。
mr-type.png4.Fling
Fling 按钮,用于模拟一个滑动操作。
mr-fling.png5.Export Actions
Export Actions 按钮,用于保存之前一系列的操作。保存的脚本,后缀为了标识清楚,一般可以使用 .mr 或者 .script,都可以,没有强制要求。
6.RefreshDisplay
这个没什么好说的,如果遇上 MonkeyDecoreder 显示的图像和设备上不符合,可以点此按钮进行刷新。
2、回放
将录制好的脚本,通过 Export Actions 以脚本的形式保存到本地之后,就可以通过 monkey_playback.py 脚本进行回放了。回放功能会将之前录制好的操作,原样返回到设备中去。
monkeyrunner monkey_playback.py <script.mr>
三、手把手录制一个脚本
既然都介绍了 MR 录制脚本需要用到的一些工具和脚本,接下来我们就可以开始实际录制一个脚本,来看看录制的流程,跟好的理解问题。
首先我们需要设计好需要录制的操作,这个和之前 MonkeyRunner 手写的脚本逻辑一样。
操作步骤:
- 在用户明对话框,输入:abcd
- 在密码框中,输入:1234
- 点击 Login 按钮。
在这些操作的空隙内,暂停 1s ,以方便我们看到步骤在执行。
1、开始录制脚本
执行 monkey_recorder.py 去打开 MonkeyRecorder 窗口,进行操作。
mr-recorder.gif从上面的步骤可以看出来,每次的操作,右边就出现对应的的脚本,可以看到之前的步骤。因为录屏工具的缘故,在 gif 图中,并没有实时刷新 UI ,但是实际上是会自动刷新的。
录制好的脚本,就可以以脚本的形式保存到本地。就可以在需要回放的时候使用了。
2、回放脚本
既然已经保存了我们需要的回放的脚本。那么就可以直接回放了。也没什么需要注意的,输入命令即可。
monkeyrunner monkey_playback.py <script.mr>
按照脚本回放之后,就可以在设备上,看到正在回放我们之前录制好的脚本了。
3、录制的脚本
最后再来阅读一下,之前录制好的脚本。
mr-script.png语法非常的简单,大概能猜出来在干什么,无非是对一些坐标点进行点击,输入了message子类的。如果熟练的话,录制的脚本是可以自行修改的,避免有一点错漏而导致完全重新录制,可以将多次录制的结果,拼接在一起。
四、录制和回放的源码
既然都是用 Python 脚本写的,我们可以研究一下它的源码的。
monkey_recorder.py 的远吗非常的简单。
mr-code1.png可以看到,实际上有效的代码就是,recorder.start 这一句。
而 monkey_playback.py 的代码就比较多了,需要对录制好的脚本进行解析。
mr-code2.png五、结语
MR 就是一个基于坐标的自动化测试方案,对于录制好的脚本,它并不知道是在测试什么,所以在运行脚本之前,需要手动打开我们的待测试 App。
公众号的文章,为了排版清晰,代码都是使用的图片。如果需要相关脚本的文件,可以在本公众号回复关键字『 mr录制 』,得到相关 Python 脚本和本文中测试的App。
既然都看到这里了,点个赞吧。
公众号二维码.jpg
网友评论