对于MonkeyRunner,有些人可能会想,既然是Android自动化测试,离不开测试脚本,那么,我们可不可以录制测试脚本呢,答案是可以的。

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

#Usage: monkeyrunner recorder.py#recorder.py  http://mirror.yongbok.net/linux/android/repository/platform/sdk/monkeyrunner/scripts/monkey_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/android/repository/platform/sdk/monkeyrunner/scripts/monkey_playback.pyimport 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"

更多相关文章

  1. Android事务 IMMEDIATE与EXCLUSIVE模式
  2. [转]Android(安卓)onActivityResult()不执行的几个原因
  3. Android(安卓)收缩展开动画
  4. android,bindService实例
  5. #android training# Graphics & Animation:Display Bitmaps Effi
  6. Android基础笔记(二)-数据存储和界面展现
  7. Android中AsyncTask详解,源码剖析(API 23)
  8. Socket Android手机客户端与PC服务端局域网内联测试
  9. 跑马灯效果

随机推荐

  1. android录音和得到音量
  2. Android仿美图秀秀给图片加框
  3. android 用沉浸式隐藏status bar
  4. Android综合小练习Fragment,解析,Handler
  5. Android切换横屏竖屏生命周期变化
  6. Android(安卓)软键盘相关辅助类KeyBoardU
  7. Create Native iOS, Android, Mac and Wi
  8. android > 弹出复选框
  9. Android:计算剩余内存
  10. Android(安卓)ViewGroup事件分发机制