MonkeyRunner 录制脚本啦

作者: 承香墨影 | 来源:发表于2017-04-06 19:32 被阅读215次

    版权声明:

    本账号发布文章均来自公众号,承香墨影(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.png

    2.Press a Button

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

    mr-press.png

    3.Type Something

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

    mr-type.png

    4.Fling

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

    mr-fling.png

    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 窗口,进行操作。

    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

    相关文章

      网友评论

        本文标题:MonkeyRunner 录制脚本啦

        本文链接:https://www.haomeiwen.com/subject/wigqattx.html