zoukankan      html  css  js  c++  java
  • 【Android测试】【第十节】MonkeyRunner—— 录制回放

    版权声明:本文出自胖喵~的博客,转载必须注明出处。

       转载请注明出处:http://www.cnblogs.com/by-dream/p/4861693.html

    前言 


      在实际项目进行过程中,频繁的需求变更和突如其来的测试任务,不会留给我们过多的时间去写测试脚本,这个时候如果可以进行录制我的一次操作,然后自动的回放出来,那么就能够节省很多的时间。

      恰好monkeyrunner帮我们提供了可以录制 回放的功能。

      发现一个看源码的网址:http://124.16.141.157/lxr-0101/source/sdk/monkeyrunner/scripts/?v=android-4.0.4

    录制


      很简单,四条命令遍可以打开MonkeyRecorder

    from com.android.monkeyrunner import MonkeyRunner as mr
    from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
    
    device = mr.waitForConnection()
    recorder.start(device)

      可以选择在cmd中打开,也可以将命令写到python脚本中进行打开(其实这就是 Android源代码 /source/sdk/monkeyrunner/scripts/ 目录下的 monkey_recorder.py 脚本的内容)。

    cmd中的打开方式

      打开后界面如下图所示:

      介绍一下这个工具的简单用法,MonkeyRecorder主要用来录制测试者操作的整个过程,在打开这个软件之前,你需要保证你的手机设备已经成功连接了电脑。这个界面上显示的内容就是你手机当前屏幕的内容。

      用鼠标点击这个界面,点击的坐标就会被记录下来,这样就算是录制了你的点击事件。我们知道一个相对完整的脚本仅有点击事件是不够的,那么其他的一些事件如何添加的,那就得依靠上面的按钮:

        Wait: 相当于在sleep,在每一步和每一步操作中间有时候需要添加一个等待,以防止点击速度过快有些ui还没跳转成功。

             

           输入数字后,点击确定,在屏幕的右侧,就可以看到 “Wait for 2.00000 seconds” 的字样了

        Press a Button: 相当于MonkeyDevice.press 的命令,用来模拟“home键点击”,“back键按下、抬起” 等事件。

             

        Type Something: 相当于type,输入文本用的。

        Fling: 模拟滑动事件。

        Refresh Display: 刷新一下,同步手机端的屏幕。

        Export Actions: 导出我们刚才操作的动作,右边红框内就是刚才操作的内容。

             

              导出后,在本地生成一个文件,这个文件将来我们就用它来进行回放。导出后的文件内容:

    回放


      首先将我们录制的文件(假如文件名为123),拷贝到和monkeyrunner同级目录下。

      然后还需一个脚本,脚本的内容如下:

    import sys
    from com.android.monkeyrunner import MonkeyRunner
    
    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:  
                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()  

      将该脚本也保存到根目录下,命令为 replay.py。

      然后直接运行在命令行下: monkeyrunner.bat replay.py 123  即可完成回放。

            

  • 相关阅读:
    Jmeter Ant Task如果报告中有错误,在邮件内容里面直接显示出来 系列2
    自动化测试的点点滴滴经验积累
    Java中通过SimpleDateFormat格式化当前时间:/** 输出格式:20060101010101001**/
    Good Bye 2015 A
    Codeforces Round #337 (Div. 2)B
    Codeforces Round #337 (Div. 2) A水
    hdu 1698 线段树 区间更新 区间求和
    hdu 1166线段树 单点更新 区间求和
    HDU2841 (队列容斥)
    15ecjtu校赛1006 (dfs容斥)
  • 原文地址:https://www.cnblogs.com/by-dream/p/4861693.html
Copyright © 2011-2022 走看看