当前位置:操作系统 > 安卓/Android >>

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

对于MonkeyRunner,有些人可能会想,既然是Android自动化测试,离不开测试脚本,那么,我们可不可以录制测试脚本呢,答案是可以的。
我们先看看以下monkeyrecoder.py脚本:
[html]  
#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
[html]  
#Usage: monkeyrunner playback.py "myscript"  
  
#playback.py   http://mirror.yongbok.net/linux/android/repository/platform/sdk/monkeyrunner/scripts/monkey_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():   www.zzzyk.com
    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"
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,