MonkeyRunner有个功能叫Monkeyrecorder,实现起来非常简单。
play.py文件内容如下:
from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder device = mr.waitForConnection() recorder.start(device) 直接在命令行中打上:
monkeyrunner.bat play.py
![]()
出现Monkeyrecorder界面,其中菜单中的按键代表的意思:
Button | Description | Wait | 等待时间 | Press a Button | 发送,MENU,HOME,or SEARCH 按钮.Press,Down,or Up事件 | Type Something | 发送一些字符串 | Fling | 用来操作虚拟键盘 | Export Action | 将我们的脚本导出来 | Refresh Display | 刷新当前界面 |
录制好脚本,导出文件,保存为后缀名为mr的文件。
接下来运行playback.py脚本,然后,你就看到模拟器,进行你刚才一样的操作.
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 thepydict 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') process_file(fp, device) fp.close(); if __name__ == '__main__': print 'start running' device = MonkeyRunner.waitForConnection()
#loop playback for i in range(1,3): main() print i i=i+1 else: print 'over'
在命令行中输入:
monkeyrunner.bat playback.py 保存文件的名字路径
设备会重复之前录制的操作,此脚本是循环执行录制内容,可以修改for循环中的次数。
|