Android SDK与Python环境配置完毕,调用MonkeyRunner的MonkeyRecorder与MonkeyRunner接口启动脚本录制工具,脚本我命名为app_playback.py,把编写的脚本放在Android SDK安装目录下面的\tools目录下,与monkeyrunner.bat在同一级目录下:

#coding=utf8
#需要用到命令行参数列表因此导入sys
import sys
#导入monkeyrunner用来操作设备
from com.android.monkeyrunner import MonkeyRunner
#窗念一个命令哈希表,定义操作事件
CMD_MAP = {
'TOUCH': lambda device, arg: device.touch(**arg),
'DRAG': lambda device, arg: device.drag(**arg),
'PRESS': lambda device, arg: device.press(**arg),
'TYPE': lambda device, arg: device.type(**arg),
'WAIT': lambda device, arg: MonkeyRunner.sleep(**arg)
}
#处理录制脚本文件
#定义两个参数:
#scriptfile----录制脚本的文件名
#device--------当前设备
def process_file(scriptfile, device):
#读取文件信息
for line in scriptfile:
#文件以|进行分割
#把命令放入cmd中
#把命令操作之后的信息存入rest中
(cmd, rest) = line.split('|')
try:
#将字符串rest当成有效的表达式来求值并返回计算结果
rest = eval(rest)
except:
print 'unable to parse options'
continue
#判断命令是否在 CMD_MAP中
if cmd not in CMD_MAP:
print 'unknown command: ' + cmd
continue
#回放脚本中命令操作
CMD_MAP[cmd](device, rest)
def main():
#在命令行输入例如:
#monkeyrunner app_playback "文件名[可以带有路径]"
file = sys.argv[1]
#打开录制脚本
scriptfile = open(file, 'r')
#对连接的对象创建一个对象
device = MonkeyRunner.waitForConnection()
#调用回放函数,对脚本进行回放
process_file(scriptfile, device)
#关闭脚本文件
scriptfile.close();
#判断是否作为运行程序
#如果是运行main函数
if __name__ == '__main__':
main()


命令执行状态,如果第一次执行脚本时,会准备monkeyrunner与python环境,我执行命名如下:


python使用monkeyrunner对录制脚本进行回放脚本_android



上面一大坨是用于演示,首次执行脚本时候的操作; 执行成功后再次执行相同的命令,如果没有错误,说明脚本执行成功,你可以看到手机上的app被打开