<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                最近在復習之前的筆記,在回顧MonkeyRunner時看了看google官網的內容,寫得不錯,就翻譯出來分享下。其實google官網真是一個學習的好地方。 ### 基礎知識 MonkeyRunner工具提供了一個API用于在Android代碼之外控制Android設備和模擬器。通過MonkeyRunner,您可以寫出一個Python程序去安裝一個Android應用程序或測試包,運行它,向它發送模擬擊鍵,截取它的用戶界面圖片,并將截圖存儲于工作站上。monkeyrunner工具的主要設計目的是用于測試功能/框架水平上的應用程序和設備,或用于運行單元測試套件,但您當然也可以將其用于其它目的。? MonkeyRunner工具與monkey工具并無關聯。monkey工具直接運行在設備或模擬器的adbshell中,生成用戶或系統的偽隨機事件流。而MonkeyRunner工具則是在工作站上通過API定義的特定命令和事件控制設備或模擬器。? MonkeyRunner工具為Android測試提供了以下特性: * 多設備控制:MonkeyRunner的API可以跨多個設備或模擬器實施測試套件。您可以在同一時間接上所有的設備,也可以一次啟動全部模擬器,依據程序來依次連接到每個設備,然后運行一個或多個測試。您也可以用程序啟動一個配置好的模擬器,運行一個或多個測試。 * 功能測試:MonkeyRunner可以為一個應用自動貫徹一次功能測試。您提供按鍵或觸摸事件的輸入數值,然后觀察輸出結果的截屏。 * 回歸測試:MonkeyRunner可以運行某個應用,并將其結果截屏與既定已知正確的結果截屏相比較,以此測試應用的穩定性。 * 可擴展的自動化:由于MonkeyRunner是一個API工具包,您可以基于Python模塊和程序開發一整套系統,以此來控制Android設備。除了使用MonkeyRunner的API之外,您還可以使用標準的Python os和subprocess模塊來調用如adb這樣的Android工具。 您還可以向MonkeyRunnerAPI中添加您自己的類。我們將在后面會對此進行詳細討論。? MonkeyRunner工具使用Jython(使用Java編程語言的一種Python實現)。Jython允許MonkeyRunner API與Android框架輕松的進行交互。使用Jython,您可以使用Python語法來獲取API中的常量、類以及方法。 ## 一個簡單的MonkeyRunner程序實例 以下為一個簡單的MonkeyRunner程序,它將會連接到一個設備,創建一個MonkeyDevice對象。使用MonkeyDevice對象,程序將安裝一個Android應用包,運行其中一個活動,并向其發送按鍵事件。程序接下來會將結果截圖,創建一個MonkeyImage對象,并使用這個對象截圖將保存至.png文件。 ~~~ # 導入此程序所需的MonkeyRunner模塊 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice # 連接當前設備,返回一個MonkeyDevice對象 device = MonkeyRunner.waitForConnection() # 安裝Android包,注意,此方法返回的返回值為boolean,由此您可以判斷安裝過程是否正常 device.installPackage('myproject/bin/MyApplication.apk') # 運行此應用中的一個活動 device.startActivity(component='com.example.android.myapplication.MainActivity') # 按下菜單按鍵 device.press('KEYCODE_MENU','DOWN_AND_UP') # 截取屏幕截圖 result = device.takeSnapShot # 將截圖保存至文件 result.writeToFile('myproject/shot1.png','png') ~~~ ## MonkeyRunner 的API MonkeyRunner 在com.android.monkeyrunner包中總共包含三個模塊: * MonkeyRunner:一個為monkeyrunner程序提供工具方法的類。這個類提供了用于連接monkeyrunner至設備或模擬器的方法。它還提供了用于創建一個monkeyrunner程序的用戶界面以及顯示內置幫助的方法。 * MonkeyDevice :表示一個設備或模擬器。這個類提供了安裝和卸載程序包、啟動一個活動以及發送鍵盤或觸摸事件到應用程序的方法。您也可以用這個類來運行測試包。 * MonkeyImage :表示一個截圖對象。這個類提供了截圖、將位圖轉換成各種格式、比較兩個MonkeyImage對象以及寫圖像到文件的方法。 在python程序中,您將以Python模塊的形式使用這些類。monkeyrunner工具不會自動導入這些模塊。您必須使用類似如下的from語句: ~~~ fromcom.android.monkeyrunner import ~~~ 其中,為您想要導入的類名。您可以在一個from語句中導入超過一個模塊,其間以逗號分隔。 ## 運行MonkeyRunner 您可以直接使用一個代碼文件運行MonkeyRunner,抑或在交互式對話中輸入MonkeyRunner語句。不論使用哪種方式,您都需要調用SDK目錄的tools子目錄下的MonkeyRunner命令。如果您提供一個文件名作為運行參數,則MonkeyRunner將視文件內容為Python程序,并加以運行;否則,它將提供一個交互對話環境。? MonkeyRunner命令的語法為: ~~~ monkeyrunner -plugin <程序文件名> <程序選項> ~~~ * -plugin : (可選)指定一個內含MonkeyRunner插件的.jar文件。欲了解更多關于monkeyrunner插件的內容,參考下文。要指定多個文件,可以多次使用此參數。 * : 如果您指定此參數,MonkeyRunner將視文件內容為Python程序并予以執行。如果此參數未予指定,則開啟一個交互式會話。 * :(可選)中所指定的程序所需的參數。 ## MonkeyRunner提供幫助 您可以用以下命令來生成monkeyrunner的API參考: ~~~ monkeyrunner help.py ~~~ 參數說明:? 可以為text或html,分別代表純文本和HTML輸出。? 指定了輸出文件的全路徑名稱。 ## 使用插件擴展MonkeyRunner 您可以用Java語言創建新的類,并打包成一個或多個.jar文件,以此來擴展 MonkeyRunner API。您可以使用您自己寫的類或者繼承現有的類來擴展MonkeyRunner API。您還可以使用此功能來初始化MonkeyRunner環境。? 為了使MonkeyRunner加載一個插件,您應當如使用如前面所述的-plugin參數來調用MonkeyRunner命令。 在您編寫的插件中,您可以導入或繼承位于com.android.monkeyrunner包中的幾個主要的monkeyrunner類:MonkeyDevice, MonkeyImage和MonkeyRunner。 請注意,插件無法讓你訪問Android的SDK。您不能導入com.android.app等包。這是因為monkeyrunner是在框架API層次之下與設備或模擬器進行交互的。 ## 插件啟動類 用于插件的.jar文件可以指定一個類,使其在腳本執行之前就實例化。如欲指定這個類,您需要在.jar文件的manifest中添加鍵 MonkeyRunnerStartupRunner。其值為啟動時運行的類的名稱。以下代碼段顯示了如何在一個ant構建腳本達到這樣的目的: ~~~ <jar jarfile="myplugin" basedir="${build.dir}"> <manifest> <attribute name="MonkeyRunnerStartupRunner" value="com.myapp.myplugin"/> </manifest> </jar> ~~~ 如欲訪問MonkeyRunner的運行時環境,啟動類可以實現com.google.common.base.Predicate。例如,用這個類在默認的命名空間中設置一些變量: ~~~ package com.android.example; import com.google.common.base.Predicate; import org.python.util.PythonInterpreter; public class Main implements Predicate { @Override public boolean apply(PythonInterpreter anInterpreter) { /* * Examples of creating and initializing variables in the monkeyrunner environment's * namespace. During execution, the monkeyrunner program can refer to the variables "newtest" * and "use_emulator" * */ anInterpreter.set("newtest", "enabled"); anInterpreter.set("use_emulator", 1); return true; } } ~~~ MonkeyRunner到此翻譯完,用好自動化測試框架對android開發有很大幫助。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看