Android開發者指南(5) —— monkeyrunner

前言html

  本章內容爲開發者指南(Dev Guide)/Developing/Tools/monkeyrunner,版本爲Android2.3 r1,翻譯轉載並整理自譯言:"biAji",原文地址:"http://article.yeeyan.org/view/37503/164523",再次感謝"bjAji" !期待你一塊兒參與翻譯Android的相關資料,聯繫我over140@gmail.com。
 python

 

聲明android

  本文檔轉載並整理自譯言:Monkeyrunner 使用說明shell

  Android中文翻譯組:http://goo.gl/6vJQl
 編程

 

原文
 app

正文編程語言

monkeyrunner工具提供了一個API,使用此API寫出的程序能夠在Android代碼以外控制Android設備和模擬器。經過monkeyrunner,您能夠寫出一個Python程序去安裝一個Android應用程序或測試包,運行它,向它發送模擬擊鍵,截取它的用戶界面圖片,並將截圖存儲於工做站上。monkeyrunner工具的主要設計目的是用於測試功能/框架水平上的應用程序和設備,或用於運行單元測試套件,但您固然也能夠將其用於其它目的。ide

monkeyrunner工具與(UI/Application Exerciser Monkey)戶界面/應用程序測試工具,也稱爲monkey工具並沒有關聯。monkey工具直接運行在設備或模擬器的adb shell中,生成用戶或系統的僞隨機事件流。而monkeyrunner工具則是在工做站上經過API定義的特定命令和事件控制設備或模擬器。工具

monkeyrunner工具爲Android測試提供瞭如下特性:

* 多設備控制:monkeyrunner    API能夠跨多個設備或模擬器實施測試套件。您能夠在同一時間接上全部的設備或一次啓動所有模擬器(或通通一塊兒),依據程序依次鏈接到每個,而後運行一個或多個測試。您也能夠用程序啓動一個配置好的模擬器,運行一個或多個測試,而後關閉模擬器。

* 功能測試:    monkeyrunner能夠爲一個應用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,而後觀察輸出結果的截屏。

* 迴歸測試:monkeyrunner能夠運行某個應用,並將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。 

* 可擴展的自動化:因爲monkeyrunner是一個API工具包,您能夠基於Python模塊和程序開發一整套系統,以此來控制Android設備。除了使用monkeyrunner    API以外,您還能夠使用標準的Python    ossubprocess模塊來調用如Android Debug Bridge這樣的Android工具        

您還能夠向monkeyrunner API中添加您本身的類。咱們將在使用插件擴展monkeyrunner一節中對此進行詳細討論

         monkeyrunner工具使用Jython(使用Java編程語言的一種Python實現)。Jython容許monkeyrunnerAPI與Android框架輕鬆的進行交互。使用Jython,您能夠使用Python語法來獲取API中的常量、類以及方法。

 

一個簡單的monkeyrunner程序實例(A Simple monkeyrunner Program)

         如下爲一個簡單的monkeyrunner程序,它將會鏈接到一個設備,建立一個MonkeyDevice對象。使用MonkeyDevice對象,程序將安裝一個Android應用包,運行其中一個活動,並向其發送按鍵事件。程序接下來會將結果截圖,建立一個MonkeyImage對象,並使用這個對象截圖將保存至.png文件。

    
 

 

 

The monkeyrunner API

monkeyrunnerAPIcom.android.monkeyrunner包中包含三個模塊:

* MonkeyRunner:一個爲monkeyrunner程序提供工具方法的類。這個類提供了用於鏈接monkeyrunner至設備或模擬器的方法。它還提供了用於建立一個monkeyrunner程序的用戶界面以及顯示內置幫助的方法。 

MonkeyDevice:表示一個設備或模擬器。這個類提供了安裝和卸載程序包、啓動一個活動以及發送鍵盤或觸摸事件到應用程序的方法。您也能夠用這個類來運行測試包。  

* MonkeyImage:表示一個截圖對象。這個類提供了截圖、將位圖轉換成各類格式、比較兩個MonkeyImage對象以及寫圖像到文件的方法。

python程序中,您將以Python模塊的形式使用這些類。monkeyrunner工具不會自動導入這些模塊。您必須使用相似以下的from語句:

  

 

其中,爲您想要導入的類名。您能夠在一個from語句中導入超過一個模塊,其間以逗號分隔。

 

Running monkeyrunner

您能夠直接使用一個代碼文件運行monkeyrunner,抑或在交互式對話中輸入monkeyrunner語句。不論使用哪一種方式,您都須要調用SDK目錄的tools子目錄下的monkeyrunner命令。若是您提供一個文件名做爲運行參數,則monkeyrunner將視文件內容爲Python程序,並加以運行;不然,它將提供一個交互對話環境。

monkeyrunner命令的語法爲:

  
 

 

1闡釋了命令的標誌和參數。

參數

說明

-plugin <plugin_jar>

 (可選)指定一個內含monkeyrunner插件的.jar文件。欲瞭解更多關於monkeyrunner插件的內容,請參照(Extending monkeyrunner with plugins)使用插件擴展monkeyrunner。要指定多個文件,包括屢次論證。如欲指定超過一個文件,能夠屢次使用此參數。

<program_filename>

若是您指定此參數,monkeyrunner將視文件內容爲Python程序並予以執行。若是此參數未予指定,則開啓一個交互式會話。

<program_options>

(可選)<程序文件名所指定的程序所需的參數

 

monkeyrunner內建幫助(monkeyrunner Built-in Help)

您能夠用如下命令來生成monkeyrunnerAPI參考:

        

         參數說明:

* 能夠爲texthtml,分別表明純文本和HTML輸出。

* 指定了輸出文件的全路經名稱。

 

使用插件擴展monkeyrunner(Extending monkeyrunner with Plugins)

您能夠用Java語言建立新的類,並打包成一個或多個.jar文件,以此來擴展monkeyrunnerAPI。您能夠使用您本身寫的類或者繼承現有的類來擴展monkeyrunnerAPI。您還能夠使用此功能來初始化monkeyrunner環境。

         爲了使monkeyrunner加載一個插件,您應當如使用如1中所述的-plugin參數來調用monkeyrunner命令。

         在您編寫的插件中,您能夠導入或繼承位於com.android.monkeyrunner包中的幾個主要的monkeyrunner類:MonkeyDevice MonkeyImageMonkeyRunner(參見monkeyrunnerAPI )。

         請注意,插件沒法讓你訪問AndroidSDK。您不能導入com.android.app等包。這是由於monkeyrunner是在框架API層次之下與設備或模擬器進行交互的。

 

插件啓動類(The plugin startup class)

         用於插件的.jar文件能夠指定一個類,使其在腳本執行以前就實例化。如欲指定這個類,您須要在.jar文件的manifest中添加鍵MonkeyRunnerStartupRunner。其值爲啓動時運行的類的名稱。如下代碼段顯示瞭如何在一個ant構建腳本達到這樣的目的:

        

如欲訪問 monkeyrunner 的運行時環境,啓動類能夠實現 com.google.common.base.Predicate<PythonInterpreter> 。例如,用這個類在默認的命名空間中設置一些變量:

   

相關文章
相關標籤/搜索