版權聲明:該文章為AirtestProject原創文章;允許轉載,但轉載必須注明“轉載”並保留原鏈接
前言
前面我們已經介紹了基於圖像識別的測試框架Airtest,通過圖像識別,已經可以編寫大部分的測試腳本。但是在某些特殊情況下,例如對於游戲或App里的動態元素,通過圖像識別定位較為困難。所以,我們的Airtest Project解決方案也提供了另外一種基於UI控件搜索的自動化框架 Poco,下面我們來通過一個示例來看看Poco如何使用。
示例
原生應用
對於Android和iOS平台上的原生應用(包括系統界面),可以直接使用Poco
准備工作:下載 Airtest IDE,解壓並運行
Android 原生應用
- 准備一台Android手機,打開USB調試功能,然后連接電腦。正常情況下,就可以在Airtest IDE中看到手機列表:
- 點擊
connect
,即可在Airtest IDE 中看到設備屏幕。現在進入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手機上進行自動化測試(下))。
iOS 原生應用
對於iOS原生應用,Poco同樣可以獲取到UI層級結構。除了下載運行Airtest IDE之外,我們還需要運行ios-Tagent項目,才可以獲取到iOS界面的UI信息。具體步驟如下
- 連接iOS手機,啟動ios-Tagent項目,以Test方式運行到手機上。
- 使用
iproxy
命令啟動代理
iproxy 8100 8100
如果希望在另外一台電腦連接iOS手機,可以安裝wdaproxy
- 啟動Airtest IDE, 輸入proxy地址,即可連接iOS手機
- 選擇Poco輔助窗中的
iOS
模式,即可看到當前界面的UI樹結構:
- 獲取到界面UI層級關系之后,我們就可以用Poco提供的API來編寫自動化腳本了~
游戲
由於游戲的界面是通過游戲引擎渲染出來的,游戲界面沒有系統原生的控件信息,所以對於游戲,我們需要接入 poco-sdk 才能獲取到游戲界面中的控件信息。下面以Unity開發的手游為例,介紹如何在Android和iOS平台進行連接。
Android 游戲
- 參考 引擎接入指引,接入Poco-sdk。如下是Unity中接入方式:
- 啟動Airtest IDE,並啟動對應的游戲,選擇Poco輔助窗中的
Unity
模式,即可看到當前界面的UI樹結構:
- 在選擇Unity模式之后,Airtest IDE會自動插入poco的初始化代碼:
from poco.drivers.unity3d import UnityPoco poco = UnityPoco()
之后的腳本編寫,就可以利用Poco提供的API對游戲界面上的元素進行操作了
iOS 游戲
- 同樣的,先完成引擎SDK接入,然后通過Airtest IDE連接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上的游戲編寫自動化測試腳本了。
Poco的平台支持情況
Poco在大多數平台中,需要事先接入Poco-SDK才可正常使用 ,在少數平台(如Android與iOS原生APP)可直接使用Poco,目前支持平台如下:
平台 | Airtest | Poco |
---|---|---|
Cocos2dx-js, Cocos2dx-lua | √ | 接入文檔 |
Unity3D | √ | 接入文檔 |
Android 原生APP | √ | 直接使用 |
iOS | √ | 幫助文檔 |
Egret | √ | 接入文檔 |
Other engines | √ | 可自行接入 |
WeChat Applet&webview | √ | 參考文檔 隨着微信更新可能會失效 |
Windows, MacOS | √ | 敬請期待 |
Netease | √ | 網易內部引擎幫助文檔 |
在文檔Poco支持平台中,可以獲得最新更新的平台支持情況。
更多詳細資料參考
請查看Poco官方文檔獲得更多教程與API信息,這里是一些關注度較高的內容: