【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  即可完成回放。

        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM