版權聲明:容許轉載,但轉載必須保留原連接;請勿用做商業或者非法用途html
經過閱讀本篇教程,你將會了解到:android
Poco支持直接對任何Android原生應用(非遊戲引擎、非webview)進行UI層次結構識別,用法上與Poco在其餘平臺上如出一轍。git
注:基於webview的應用比較特殊(如微信小程序或瀏覽器),請見文檔Poco如何支持WebView檢視。web
在AirtestIDE的Poco Assistant
面板中選擇Android模式以後,AirtestIDE會開始自動向手機裏安裝Pocoservice.apk
和Pocoservice-test.apk
,部分型號手機須要手動點擊確認安裝才能順利安裝。小程序
安裝完成後,AirtestIDE會自動啓動PocoService
,它會定時抓取 Android上界面的層次結構信息,稍等片刻就能夠在AirtestIDE界面中看到當前界面的UI層次結構樹。微信小程序
點擊UI樹上的任意節點,能夠Log面板中看到該節點的全部屬性,同時設備畫面中將出現方框,把對應位置框選出來,方便定位節點。api
若是Pocoservice
啓動失敗,會致使Pocoservice.apk
反覆重裝,此時能夠檢查如下幾個方面:瀏覽器
Android SDK API
≥ 19,即Android 4.4及以上poco\poco\drivers\android\lib
目錄下可以找到這兩個APKYosemite
輸入法設置爲默認輸入法+當前輸入法在這裏咱們提供一個使用Poco對一個計算器應用編寫代碼的例子,點這裏下載示例App(calculator),並事先將此App安裝到手機上。微信
按照剛纔說的,在AirtestIDE中的Poco輔助窗下拉菜單中選擇Android
後,AirtestIDE將會自動啓動Pocoservice
,顯示出當前的UI控件層次結構樹。此後就能夠在AirtestIDE中進行Poco語句的編寫和錄製了。網絡
下面這段代碼例子將演示一個簡單的功能:點擊calculator的界面,實現一個1+1=2的運算驗證。
from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco() poco('com.google.android.calculator:id/digit_1').click() poco('com.google.android.calculator:id/op_add').click() poco('com.google.android.calculator:id/digit_1').click() poco('com.google.android.calculator:id/eq').click() result = poco('com.google.android.calculator:id/formula').get_text() assert_equal(result, '2', '1+1=2 ^^')
在這段代碼中,咱們使用poco = AndroidUiautomationPoco()
初始化了一個poco對象,而後分別選取了1
+
1
按鈕進行點擊操做後,使用get_text
接口很是輕鬆地獲取到告終果控件的值2
,而且使用斷言語句進行結果驗證。
這個例子很是簡單,更多poco用法和例子請見poco tutorial。
在上一篇教程(4、如何在Android手機上進行測試(上)-多機協做)中,咱們提到了一個腳本里能夠鏈接多臺Android手機,而且用set_current
接口在手機之間切換:
from airtest.core.api import connect_device dev1 = connect_device("Android://127.0.0.1:5037/serialno1") # 連上第一臺手機 dev2 = connect_device("Android://127.0.0.1:5037/serialno2") # 第二臺手機 set_current(1)
假如咱們在連上手機後,想要分別使用poco去獲取控件和點擊這兩臺不一樣的手機,此時須要分別初始化兩個poco,就像這樣:
from airtest.core.api import connect_device dev1 = connect_device("Android://127.0.0.1:5037/serialno1") # 連上第一臺手機 poco1 = AndroidUiautomationPoco(dev1) dev2 = connect_device("Android://127.0.0.1:5037/serialno2") # 第二臺手機 poco2 = AndroidUiautomationPoco(dev2) set_current(1) # 切到第二臺手機 poco2('com.google.android.calculator:id/digit_1').click()
同理,假如不使用connect_device
接口鏈接手機,而是經過直接在命令行中傳入--device
來自動鏈接手機的話,不須要在代碼裏重複執行connect_device
。此時只須要分別獲取到設備對象,而且使用設備對象初始化poco就能夠了:
from airtest.core.api import G print(G.DEVICE_LIST) # 假設當前總共有2臺手機 poco1 = AndroidUiautomationPoco(G.DEVICE_LIST[0]) poco2 = AndroidUiautomationPoco(G.DEVICE_LIST[1])