zoukankan      html  css  js  c++  java
  • Android自动化测试之MonkeyRunner录制和回放脚本

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

    分类: 自动化测试 Android自动化

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

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

    1. #Usage: monkeyrunner recorder.py  
    2. #recorder.py  http://mirror.yongbok.net/linux/android/repository/platform/sdk/monkeyrunner/scripts/monkey_recorder.py  
    3.  com.android.monkeyrunner import MonkeyRunner as mr  
    4.  com.android.monkeyrunner.recorder import MonkeyRecorder as recorder  
    5.   
    6.  device = mr.waitForConnection()  
    7.  recorder.start(device)  
    8. #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

    1. #Usage: monkeyrunner playback.py "myscript"  
    2.   
    3. #playback.py   http://mirror.yongbok.net/linux/android/repository/platform/sdk/monkeyrunner/scripts/monkey_playback.py  
    4.   
    5. import sys  
    6.  com.android.monkeyrunner import MonkeyRunner  
    7.   
    8. # The format of the file we are parsing is very carfeully constructed.  
    9. # Each line corresponds to a single command.  The line is split into 2  
    10. # parts with a | character.  Text to the left of the pipe denotes  
    11. # which command to run.  The text to the right of the pipe is a python  
    12. # dictionary (it can be evaled into existence) that specifies the  
    13. # arguments for the command.  In most cases, this directly maps to the  
    14. # keyword argument dictionary that could be passed to the underlying  
    15. # command.   
    16.   
    17. # Lookup table to map command strings to functions that implement that  
    18. # command.  
    19. CMD_MAP = {  
    20.     ""TOUCH"": lambda dev, arg: dev.touch(**arg),  
    21.     ""DRAG"": lambda dev, arg: dev.drag(**arg),  
    22.     ""PRESS"": lambda dev, arg: dev.press(**arg),  
    23.     ""TYPE"": lambda dev, arg: dev.type(**arg),  
    24.     ""WAIT"": lambda dev, arg: MonkeyRunner.sleep(**arg)  
    25.     }  
    26.   
    27. # Process a single file for the specified device.  
    28. def process_file(fp, device):  
    29.     for line in fp:  
    30.         (cmd, rest) = line.split(""|"")  
    31.         try:  
    32.             # Parse the pydict  
    33.             rest = eval(rest)  
    34.         except:  
    35.             print ""unable to parse options""  
    36.             continue  
    37.   
    38.         if cmd not in CMD_MAP:  
    39.             print ""unknown command: "" + cmd  
    40.             continue  
    41.   
    42.         CMD_MAP[cmd](device, rest)  
    43.   
    44.   
    45. def main():  
    46.     file = sys.argv[1]  
    47.     fp = open(file, ""r"")  
    48.   
    49.     device = MonkeyRunner.waitForConnection()  
    50.       
    51.     process_file(fp, device)  
    52.     fp.close();  
    53.       
    54.   
    55. if __name__ == ""__main__"":  
    56.     main()  

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

    Usage:monkeyrunner playback.py "myscript"

  • 相关阅读:
    将一堆图片自适应页面排列
    用正则匹配富文本中的文本,并替换其内容
    实战
    从 defineProperty 到 Proxy
    CSS 实现蜂巢/六边形图集
    Umi 小白纪实(三)—— 震惊!路由竟然如此强大!
    无题
    贺文
    模型可解释性方法--lime
    多模态融合注记
  • 原文地址:https://www.cnblogs.com/zhengah/p/4572055.html
Copyright © 2011-2022 走看看