5 | 如何在Android手機上進行自動化測試(下)


轉載:https://airtest.doc.io.netease.com/tutorial/0_automated_testing/

5.1 前言


通過閱讀本篇教程,你將會了解到:如何使用Poco對Android原生應用進行測試

Poco支持直接對任何Android原生應用(非游戲引擎、非WebView)進行UI層次結構識別,用法上與Poco在其它平台上一模一樣。

注:基於WebView的應用比較特殊(如微信小程序或瀏覽器),請見文檔Poco如何支持WebView檢視


 

5.2 開始前的准備


在AirtestIDE的Poco Assistant面板中選擇Android模式之后,AirtestIDE會開始自動向手機里安裝Pocoservice.apk和Pocoservice-test.apk,部分型號手機需要手動點擊“確認安裝”才能順利安裝。

安裝完成后,AirtestIDE會自動啟動PocoService,它會定時抓取Android界面上的層次結構信息,稍等片刻就可以在AirtestIDE界面中看到當前界面的UI層次結構樹。

點擊UI樹上的任意節點,可以在Log面板中看到該節點的所有屬性,同時設備畫面中將出現方框,把對應位置框選出來,方便定位節點。

如果Pocoservice啟動失敗,會導致Pocoservice.apk反復重裝,此時可以檢查以下幾個方面:

  • Android是否版本過低,Poco支持Android SDK API ≥ 19,即Android 4.4及以上
  • 請關閉PC或手機上連接的網絡代理Proxy,否則可能導致連不上Poco
  • 可以嘗試卸載手機中2個Pocoservice相關的APK,然后手工重新安裝一遍,在poco\poco\drivers\android\lib目錄下能夠找到這兩個APK
  • 部分vivo和OPPO手機需要在手機設置-輸入法設置中,把Yosemite輸入法設置為默認輸入法+當前輸入法


 

5.3 一個使用計算器的例子

 

在這里我們提供一個使用Poco對一個計算器應用編寫代碼的例子,點這里下載示例App(calculator),並將此App安裝到手機上。

按照剛才說的,在AirtestIDE中的Poco輔助窗下拉菜單中選擇Android后,AirtestIDE將會自動啟動Pocoservice,顯示出當前的UI控件層次結構樹。此后就可以在AirtestIDE中進行Poco語句的編寫和錄制了。

5.3.1 代碼示例

下面這段代碼例子將演示一個簡單的功能:點擊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

5.3.2 同時連接多台手機使用Poco

在上一節《如何在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])


免責聲明!

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



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