轉載:https://airtest.doc.io.netease.com/tutorial/0_automated_testing/
3 | Poco的介紹和入門教學
3.1 前言
前面我們已經介紹了基於圖像識別的測試框架Airtest,通過圖像識別,已經可以編寫大部分的測試腳本。但是在某些特殊情況下,例如對於游戲或App里的動態元素,通過圖像識別定位較為困難。所以,我們的Airtest Project解決方案也提供了另外一種基於UI控件搜索的自動化框架Poco,下面我們來通過一個示例來看看Poco如何使用。
3.2 示例
3.2.1 原生應用
對於Android和iOS平台上的原生應用(包括系統界面),可以直接使用Poco。
准備工作:下載AirtestIDE,解壓並運行。
(1)Android原生應用
-
准備一台Android手機,打開USB調試功能,然后連接電腦。正常情況下,就可以在AirtestIDE中看到手機列表:
-
點擊connect,即可在AirtestIDE中看到設備屏幕。現在進入Android主界面,點擊左側的Poco輔助窗,選擇Android模式,即可看到當前界面的UI樹結構:
-
選擇Poco輔助窗口中的
Poco Inspector
按鈕,即可對頁面上的UI控件進行定位: -
與Airtest的使用方式類似,我們可以使用Poco提供的方法對界面上的元素進行操作:
# Airtest IDE自動插入的初始化語句 from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False) # 點擊設置圖標 poco(desc="設置").click()
如上所示代碼,即可通過UI屬性進行元素定位,並進行操作。
關於使用Poco測試Android原生應用的更多細節,可以參考教程《如何在Android手機上進行自動化測試(下)》。
(2)iOS原生應用
對於iOS原生應用,Poco同樣可以獲取到UI層級結構。除了下載運行AirtestIDE之外,我們還需要運行iOS-Tagent項目,才可以獲取到iOS界面的UI信息。具體步驟如下:
- 連接iOS手機,啟動iOS-Tagent項目,以Test方式運行到手機上。
- 使用iproxy命令啟動代理。
iproxy 8100 8100
如果希望在另外一台電腦連接iOS手機,可以安裝wdaproxy。
-
啟動AirtestIDE,輸入proxy地址,即可連接iOS手機。
-
選擇Poco輔助窗中的iOS模式,即可看到當前界面的UI樹結構:
-
獲取到界面UI層級關系之后,我們就可以用Poco提供的API來編寫自動化腳本了。
3.2.2 游戲
由於游戲的界面是通過游戲引擎渲染出來的,游戲界面沒有系統原生的控件信息,所以對於游戲,我們需要接入Poco-SDK才能獲取到游戲界面中的控件信息。下面以Unity開發的手游為例,介紹如何在Android和iOS平台進行連接。
(1)Android游戲
-
參考引擎接入指引,接入Poco-SDK。如下是Unity中接入方式:
-
啟動AirtestIDE,並啟動對應的游戲,選擇Poco輔助窗中的Unity模式,即可看到當前界面的UI樹結構:
-
在選擇Unity模式之后,AirtestIDE會自動插入Poco的初始化代碼:
from poco.drivers.unity3d import UnityPoco poco = UnityPoco()
之后的腳本編寫,就可以利用Poco提供的API對游戲界面上的元素進行操作了。
(2)iOS游戲
-
同樣的,先完成引擎SDK接入,然后通過AirtestIDE連接iOS手機。
-
與Android不同的是,iOS Unity Poco的連接需要啟動兩個proxy,8100端口用於連接iOS手機,5001端口用於連接Poco-SDK的RPC端口。
iproxy 8100 8100 iproxy 5001 5001
這里的iproxy相當於ADB中的forward。
-
連接好iOS手機之后,選擇Poco輔助窗中的Unity模式,即可看到當前界面的UI樹結構:
-
之后即可通過Poco提供的API,對iOS上的游戲編寫自動化測試腳本了。
3.3 Poco的平台支持情況
Poco在大多數平台中,需要事先接入Poco-SDK才可正常使用,在少數平台(如Android與iOS原生APP)可直接使用Poco,目前支持平台如下:
Cocos2dx-js,Cocos2dx-lua---------接入文檔
Unity3D-------------------------接入文檔
Android原生APP-------------------直接使用
iOS-----------------------------幫助文檔
Egret---------------------------接入文檔
Other engines---------------------可自行接入
WeChat Applet&webview------------參考文檔(隨着微信更新可能會失效)
Windows, MacOS------------------敬請期待
Netease-------------------------網易內部引擎幫助文檔
在文檔Poco支持平台中,可以獲得最新更新的平台支持情況。