Monkeyrunner脚本的录制与回放

  继上一篇monkeyrunner环境搭建:http://www.cnblogs.com/zh-ya-jing/p/4351245.html 之后,我们可以进一步学习monkeyrunner了。

  我也是刚接触monkeyrunner不久,对monkeyrunner的脚本录制功能很感兴趣,所以学习一下。没想到中间遇到很多问题,之前是录制脚本不通过,再之后是手机连接不上,monkeyrunner运行不起来,归根结底还是录制脚本的问题,后向大神请教,可算是能成功录制脚本了。

  不知道出于什么目的,google把monkeyrunner的脚本录制功能雪藏了,需要从Android源码中才能将其发掘出来。monkey_recorder.py是用来录制在设备上的操作病生成脚本的,monkey_playback.py则用来回放脚本。

  新建monkey_recorder.py文件,代码如下:

#!/usr/bin/env monkeyrunner
# Copyright 2010, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder

device = mr.waitForConnection()
recorder.start(device)

  新建monkey_playback.py文件,代码如下:

#!/usr/bin/env monkeyrunner
# Copyright 2010, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import sys
from com.android.monkeyrunner import MonkeyRunner

# The format of the file we are parsing is very carfeully constructed.
# Each line corresponds to a single command.  The line is split into 2
# parts with a | character.  Text to the left of the pipe denotes
# which command to run.  The text to the right of the pipe is a python
# dictionary (it can be evaled into existence) that specifies the
# arguments for the command.  In most cases, this directly maps to the
# keyword argument dictionary that could be passed to the underlying
# command. 

# Lookup table to map command strings to functions that implement that
# command.
CMD_MAP = {
    ‘TOUCH‘: lambda dev, arg: dev.touch(**arg),
    ‘DRAG‘: lambda dev, arg: dev.drag(**arg),
    ‘PRESS‘: lambda dev, arg: dev.press(**arg),
    ‘TYPE‘: lambda dev, arg: dev.type(**arg),
    ‘WAIT‘: lambda dev, arg: MonkeyRunner.sleep(**arg)
    }

# Process a single file for the specified device.
def process_file(fp, device):
    for line in fp:
        (cmd, rest) = line.split(‘|‘)
        try:
            # Parse the pydict
            rest = eval(rest)
        except:
            print ‘unable to parse options‘
            continue

        if cmd not in CMD_MAP:
            print ‘unknown command: ‘ + cmd
            continue

        CMD_MAP[cmd](device, rest)

def main():
    file = sys.argv[1]
    fp = open(file, ‘r‘)
    device = MonkeyRunner.waitForConnection()

    process_file(fp, device)
    fp.close();

if __name__ == ‘__main__‘:
    main()

  连接真机或模拟器,执行以下命令:

$monkeyrunner monkey_recorder.py

执行完毕之后,monkeyrunner会打开一个窗口,如下所示。

它会不停地从设备上抓取最新界面,你可以直接在左边的屏幕截图上单击图标来模拟触控操作方式,不要直接操作真机或模拟器,否则无法录制脚本。操作的同时右边会实时显示录制的脚本,单击“Type something”按钮输入字符串,单击“Fling”按钮模拟滑动手势。当操作录制完毕后,单击“Export Actions”按钮,将脚本保存到指定目录,比如test.mr,关闭monkeyrunner运行窗口。

  将录制好的脚本传给monkey_playback.py文件就可以回放了,执行如下命令:

$monkeyrunner monkey_playback.py test.mr

假如回放过程出错,有可能是真机或者模拟器反应比较慢,两次操作之间间隔时间太短,所以建议两次操作之间加些wait,即每次操作之后点击“wait”按钮,增加等待时间。

强烈建议把monkey_recorder.py,monkey_playback.py和录制的脚本test.mr放入同一个目录下,这样减少出错概率,还有就是如果中间脚本运行不起来,或者运行失败什么的,建议都使用绝对路径试一下。

时间: 2024-10-11 02:44:58

Monkeyrunner脚本的录制与回放的相关文章

MonkeyRunner之MonkeyRecorder录制回放脚本(亲测可正常运行)

MonkeyRunner可以录制和回放脚本 前置条件: 电脑连接手机,输入adb devices 看看返回是否手机设备列表(我是真机,模拟器也可以) 配置好安卓sdk和Python环境 step: 1.启动录制脚本:cmd,输入命令 monkeyrunner monkey_recorder.py 会弹出一个MonkeyRecord窗口界面该窗口的功能: 注意:如果录制时候,点击,发现设备和窗口不同步,ctrl+c,输入y,再次输入录制命令(黑屏不好使) 1.可以自动显示手机当前的界面 2.自动刷

Android自动化测试之MonkeyRunner录制和回放脚本

Android自动化测试之MonkeyRunner录制和回放脚本(十一) 分类: 自动化测试 Android自动化 2013-02-22 10:57 7346人阅读 评论(2) 收藏 举报 androidAndroidANDROIDMonkeyRecordermonkeyrunnerMonkeyRunnerMonkeyrunner 对于MonkeyRunner,有些人可能会想,既然是Android自动化测试,离不开测试脚本,那么,我们可不可以录制测试脚本呢,答案是可以的. 我们先看看以下monk

MonkeyRunner录制和回放功能,实现简单自动化测试

参考:https://blog.csdn.net/u011649536/article/details/49469379 电脑端存在SDK文件,在Tool文件夹下存在MonkeyRunner.bat,可以实现简单录制和回放操作 打开录制窗口:MonkeyRunner 以下代码文件名.py #!/usr/bin/env monkeyrunner # Copyright 2010, The Android Open Source Project # # Licensed under the Apac

录制与回放终端会话

录制与回放终端会话    ==>script.scriptreplay  (制作"命令行技巧"视频教程) - 将输入命令后发生的一切按照时间先后次序记录下来,然后再进行回放 优点:终端脚本文件仅仅是一个文本文件,其文件大小不过是KB级别,远远低于桌面环境视频占用的空间大小------------------格式:script [-a] [-c COMMAND] [-f] [-q] [-t] [file] -a      Append the output to "fil

大开测试:性能-如何实现脚本分步录制(连载10)

7.10  如何实现脚本分步录制 1.问题提出 在进行一个B/S结构进销存管理系统脚本录制过程中,登录系统后,进行销售业务的处理,最后退出系统.因为登录和退出系统为一次性的操作,而销售业务可以执行多次,那有没有办法在录制脚本的时候,将系统登录.系统退出和业务处理3个部分分步录制呢? 2.问题解答 在进行Web应用系统测试时,通常包含登录系统.业务操作.退出系统3部分,登录系统部分主要是登录系统建立一个有效的连接,业务操作部分主要是进行相关业务的处理,退出系统部分主要是释放连接.而VuGen脚本主

转载:monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四)

转载自:lynnLi 的monkeyrunner之eclipse中运行monkeyrunner脚本之环境搭建(四) monkeyrunner脚本使用Python语法编写,但它实际上是通过Jython来解释执行. Jython是Python的Java实现,它将Python代码解释成Java虚拟机上的字节码并执行,这种做法允许在Python中继承一个Java类型,可以调用任意的 Java API . 本文档主要是可以实现在eclipse环境中运行Monkeyrunner脚本.所需要的环境和工具如下:

ios中的UIAutomation脚本的录制

ios的自动化测试中的脚本有录制的功能,这个给我们测试带来了很大的方便.我们可以通过录制生成代码,然后通过对生成带的修改,就可以改为自动测试的代码,一般我们可以添加延迟函数. 还是是用Recipes(苹果官方提供的测试工程)这个工程做为测试工程,然后添加选择UIAutomation,进入脚本界面, 1.点击脚本下面的红色按钮,然后进入模拟器上操作手机应用,就可以生成想一共的js代码.然后点击"停止"按钮. 生成相应的代码如下截图:   真机上和模拟器上都是一样测试,只要有开发者验证就可

Android自动化初探:用Eclipse执行MonkeyRunner脚本

Info: 初步学习,难免会有疏漏,以后我会不断修改补全,直到完美.转载请注明出处,谢谢. 2014-10-11:初版 -------------------------------------------- MonkeyRunner环境配置好以后,启动模拟器,写了个最简单的脚本. ''' Created on Oct 11, 2014 @author: deldong ''' print 'before execution' # Imports the monkeyrunner modules

linux常用命令之录制和回放

linux系统中的录制和回放功能可以很方便的做一个演示教程,主要命令:script和scriptreplay. 录制命令:script -t 2>aa.log  -a bb.session 命令解释:-t表示时序数据存放到aa.log   2>表示重定向      bb.session用来存放输入的命令 播放的命令:scriptreplay aa.log   bb.session 实时演示功能:mkfifo 1.在一台linux系统,开两个终端1和2 2.在1上,mkfifo scriptfi