您的位置:首页 > 移动开发 > Android开发

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

2013-08-02 14:20 344 查看
测试脚本录制:

方案一:

我们先看看以下monkeyrecoder.py脚本:

#Usage: monkeyrunner recorder.py

#recorder.py http://mirror.yongbok.net/linux/ ... ey_recorder.py ;

com.android.monkeyrunner import MonkeyRunner as mr

com.android.monkeyrunner.recorder import MonkeyRecorder as recorder

device = mr.waitForConnection()

recorder.start(device)

#END recorder.py

首先,连接你已经打开调试模式的ANDROID设备或模拟器,然后运行上面的脚本,例如在cmd窗口中执行命令: monkeyrunner monkeyrecoder.py

执行下面的代码后,将运行录制脚本的程序:

#Press ExportAction to save recorded scrip to a file

#Example of result:

#PRESS|{""name"":""MENU"",""type"":""downAndUp"",}

#TOUCH|{""x"":180,""y"":175,""type"":""downAndUp"",}

#TYPE|{""message"":"""",}

=================================================

这种脚本需要另外一个monkeyrunner的脚本来解释执行。monkeyplayback.py

#Usage: monkeyrunner playback.py "myscript"

#playback.py http://mirror.yongbok.net/linux/ ... ey_playback.py ;

import sys

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()

=================================================

Usage:monkeyrunner playback.py "myscript"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: