MonkeyRunner介紹 1.monkeyrunner 工具提供了一個 API,用于撰寫可從 Android 代碼外部控制 Android 設備或模擬器的程式,使用 monkeyrunner,您可以撰寫一個 Python 程式,以便安裝 Android 應用或測驗軟體包,運行它,向其發送按鍵,截取其界面的螢屏截圖,并將螢屏截圖存盤到作業站中,monkeyrunner 工具主要用于在功能/框架級測驗應用和設備以及運行單元測驗套件,但您也可以自由地將其用于其他目的, monkeyrunner 工具與 UI/Application Exerciser Monkey(即 monkey工具)無關,Monkey工具直接在設備或模擬器上的 adb shell 中運行,并生成偽隨機用戶和系統事件流,相比之下,monkeyrunner 工具是通過從 API 發送特定命令和事件,從作業站中控制設備和模擬器, monkeyrunner 工具為 Android 測驗提供了以下這些獨特功能:
- 多設備控制:monkeyrunner API 可以跨多個設備或模擬器應用一個或多個測驗套件,您可以通過物理方式連接所有設備并/或同時啟動所有模擬器,以編程方式依次連接到每個設備,然后運行一個或多個測驗,您還可以編程方式啟動模擬器配置,運行一個或多個測驗,然后關閉模擬器,
- 功能測驗:monkeyrunner 可以對 Android 應用自始至終地運行自動化測驗,您可以通過按鍵或輕觸事件提供輸入值,并以螢屏截圖的形式查看結果,
- 回歸測驗 - monkeyrunner 可通過以下方法測驗應用穩定性:運行某個應用,然后將它的輸出螢屏截圖與一組已知正確的螢屏截圖進行比較,
- 可擴展的自動化 - 由于 monkeyrunner 是一個 API 工具包,因此您可以開發一整套系統(包括基于 Python 的模塊和用于控制 Android 設備的程式),除了使用 monkeyrunner API 本身,您還可以使用標準 Python os 和 subprocess模塊來呼叫 Android 工具,例如 Android 除錯橋,
| 方法 | |
| void | alert (string message, string title, string okTitle) 針對運行當前程式的行程顯示一個提醒對話框, |
| integer | choice(string message, iterable choices, string title) 顯示一個對話框,其中列出了針對運行當前程式的行程的選項, |
| void | help(string format) 使用指定格式以類似于 Python 的 pydoc 工具的樣式顯示 monkeyrunner API 參考, |
| string | input (string message, string initialValue, string title, string okTitle, string cancelTitle) 顯示一個接受輸入的對話框, |
| void | sleep (float seconds) 將當前程式暫停指定的秒數, |
| MonkeyDevice | waitForConnection (float timeout, string deviceId) 嘗試在 monkeyrunner 后端與指定的設備或模擬器之間建立連接,回傳的是MonkeyDeviced實體 |
| 常量 | ||
| string | DOWN | 將此引數與 press() 或 touch() 的 type 引數一起使用可發送 DOWN 事件, |
| string | UP | 將此引數與 press() 或 touch() 的 type 引數一起使用可發送 UP 事件, |
| string | DOWN_AND_UP | 將此引數與 press() 或 touch() 的 type 引數一起使用可發送 DOWN 事件,緊跟著發送 UP 事件, |
| 方法 | |
| void | broadcastIntent (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags) 向此設備廣播 Intent,就像 Intent 來自應用一樣, |
| void | drag (tuple start, tuple end, float duration, integer steps) 在此設備的螢屏上模擬拖動手勢(輕觸、按住和移動), |
| object | getProperty (string key) 在給定系統環境變數的名稱后,回傳此設備的相應值,此方法的詳細說明中列出了可用的變數名稱, |
| object | getSystemProperty (string key) . adb shell getprop <key>. This is provided for use by platform developers. 的等效 API |
| void | installPackage (string path) 將包含在 packageFile 中的 Android 應用或測驗軟體包安裝到此設備上,如果應用或測驗軟體包已安裝,則會被替換, |
| dictionary | instrument (string className, dictionary args) 在 Android 插樁下運行指定的組件,并在字典中回傳結果,該字典的具體格式由正在運行的組件決定,該組件必須已存在于此設備上, |
| void | press (string name, dictionary type) 將 type 指定的按鍵事件發送到鍵碼(name)指定的按鍵, |
| void | reboot (string into) 將此設備重新啟動到 bootloadType 指定的引導加載程式中, |
| void | removePackage (string package) 從此設備中洗掉指定的軟體包,包括其資料和快取, |
| object | shell (string cmd) 執行 adb shell 命令并回傳結果(如果有), |
| void | startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags) 通過發送根據提供的引數構造的 Intent,在此設備上啟動一個 Activity, |
| MonkeyImage | takeSnapshot() 捕獲此設備的整個螢屏緩沖區,并生成一個 MonkeyImage 物件,其中包含當前顯示內容的螢屏截圖, |
| void | touch (integer x, integer y, integer type) 將 type 指定的輕觸事件發送到由 x 和 y 指定的螢屏位置, |
| void | type (string message) 將訊息中包含的字符發送到此設備,就好像這些字符是用設備鍵盤輸入的一樣,這等同于使用按鍵事件型別 DOWN_AND_UP 針對 message 中的每個鍵碼呼叫 press(), |
| void | wake () 喚醒此設備的螢屏, |
| 屬性組 | 屬性 | 說明 | 備注 |
| build | board | 設備主板的代號 | 請參閱 Build |
| brand | 為其定制作業系統的運營商或提供商, | ||
| device | 設備設計名稱, | ||
| fingerprint | 當前正在運行的 Build 的唯一識別符號, | ||
| host | |||
| ID | 變更清單編號或標簽, | ||
| model | 設備的最終用戶可見名稱, | ||
| product | 整體產品名稱, | ||
| tags | 描述 Build 的逗號分隔標記,例如“unsigned”和“debug”, | ||
| type | Build 型別,例如“user”或“eng”, | ||
| user | |||
| CPU_ABI | 本機代碼指令集的名稱,格式為 CPU 型別加 ABI 慣例, | ||
| manufacturer | 產品/硬體制造商, | ||
| version.incremental | 源代碼控制系統用來表示此版本的軟體的內部代號, | ||
| version.release | 此版本的軟體的用戶可見名稱, | ||
| version.sdk | 與此版本的作業系統相關聯的用戶可見 SDK 版本, | ||
| version.codename | 當前開發代號,如果此版本的軟體已發布,則為“REL”, | ||
| display | width | 設備的顯示屏寬度(以像素為單位), | 如需了解詳情,請參閱 DisplayMetrics, |
| height | 設備的顯示屏高度(以像素為單位), | ||
| density | 顯示屏的邏輯密度,系統會按照此系數調整 DIP(密度無關像素)單位,以適應設備的解析度,調整 DIP 是為了使 1 DIP 相當于 160 ppi 顯示屏上的一個像素,例如,在 160 dpi 螢屏上,密度為 1.0,而在 120 dpi 螢屏上,密度為 0.75, 該值并非與實際螢屏尺寸完全相符,但會根據顯示屏 DPI 的大幅變化進行調整,如需了解詳情,請參閱 density, | ||
| am.current | package | 當前正在運行的軟體包的 Android 軟體包名稱, | am.current 鍵可回傳當前正在運行的 Activity 的相關資訊, |
| action | 當前 Activity 的操作,其格式與軟體包清單中 action 元素的 name 屬性相同, | ||
| comp.class | 啟動當前 Activity 的組件的類名稱,如需了解詳情,請參閱 comp.package, | ||
| comp.package | 啟動當前 Activity 的組件的軟體包名稱,組件由軟體包名稱和軟體包所包含的類的名稱指定, | ||
| data | 啟動當前 Activity 的 Intent 中包含的資料(如果有), | ||
| categories | 由啟動當前 Activity 的 Intent 指定的類別, | ||
| clock | realtime | 自設備重新啟動后經過的毫秒數,包括深度睡眠時間, | 如需了解詳情,請參閱 SystemClock, |
| uptime | 自設備重新啟動后經過的毫秒數,不包括深度睡眠時間 | ||
| millis | 從 UNIX 紀元開始算起的當前時間(以毫秒為單位), |
| 方法 | |
| string | convertToBytes (string format) 將當前圖片轉換為特定格式并以字串形式回傳該圖片,然后您可以將其作為二進制位元組的可迭代物件來訪問, |
| tuple | getRawPixel (integer x, integer y) 以 (a,r,g,b) 格式的整數元組形式回傳圖片位置 (x,y) 處的單個像素, |
| integer | getRawPixelInt (integer x, integer y) 以 32 位整數形式回傳圖片位置 (x,y) 處的單個像素, |
| MonkeyImage | getSubImage (tuple rect) 根據當前圖片的矩形選擇區創建一個新的 MonkeyImage 物件, |
| boolean | sameAs (MonkeyImage other, float percent) 將此 MonkeyImage 物件與另一個物件進行比較,并回傳比較結果,percent 引數指定兩張“等同”的圖片之間可以存在 的百分比差異, |
| void | writeToFile (string path, string format) 將當前圖片以 format 指定的格式寫入 filename 指定的檔案,如果未提供擴展名且未指定格式,則使用默認格式“png” (Portable Network Graphics), |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/166793.html
標籤:其他
上一篇:Luogu CSP 2020 第一輪(初賽)模擬 題解&總結
下一篇:selenium---博客園登錄
