版權聲明:允許轉載,但轉載必須保留原鏈接;請勿用作商業或者非法用途
Airtest Project自動化測試方案除了支持原生應用,游戲,Web之外,也支持了最新推出的微信小程序和小游戲平台。下面我們分別來看下如何利用Airtest Project進行小程序和小游戲的自動化測試:
小程序
對於微信小程序,我們可以直接利用原生平台的Poco進行控件識別。微信小程序目前采用的內核信息可以參考官方文檔。我們用最新版(V7.0.4)的微信測試,可以直接用Android或者iOS poco模式對相應平台的小程序進行控件識別。如果無法使用,可能是由於部分Android設備的Webview內核設置問題,請參考文檔進行修改。
下面來分別看下Android和iOS上的效果:
Android小程序
連接Android手機,並打開微信小程序,以星巴克小程序為例,在Airtest IDE中選擇Android
模式,可以對頁面進行控件識別:
iOS小程序
連接iOS手機,並打開微信小程序,以星巴克小程序為例,在Airtest IDE中選擇iOS
模式,可以對頁面進行控件識別:
如下示例代碼可以實現在iOS上點擊對應卡面的操作:
from airtest.core.api import * auto_setup(__file__) from poco.drivers.ios import iosPoco poco = iosPoco() while not poco("感恩有你").exists(): poco.scroll(direction='vertical', percent=0.3, duration=1.0) snapshot() poco("感恩有你").click()
小游戲
Airtest 可以使用基於圖像識別的方式對小游戲進行自動化測試,此外,Poco UI控件檢索也對使用白鷺引擎開發的小游戲進行了支持。Poco的接入需要在源代碼中接入poco-sdk,具體接入指引如下:
環境配置
- 首先下載 poco-sdk
- 然后在
egretProperties.json
中修改modules屬性,添加紅框內相應字段,其中name屬性必須為poco - 路徑可以是相對路徑也可以是絕對路徑,具體可以參考白鷺引擎說明文檔中有關於 modules字段的說明
- 然后通過快捷鍵 ctrl+` 呼出終端 在終端中執行命令egret build -e
- 在入口文件
main.ts
的rungame函數中新建類型為PocoManager
的對象,並且傳入this.stage
- 運行代碼,啟動游戲
- 最后在在終端中輸入
python -m poco.utils.net.stdbroker ws://*:5003 tcp://*:15004
,打開代理服務器broker - 其中websocket端口默認為5003,如果有更改的需要,可以在新建pocomanager的時候傳入端口參數
使用AirtestIDE連接
連接手機瀏覽器
AirtestIDE支持Android和iOS手機連接,可以在手機上打開Egret頁面(或者微信小程序/游戲),然后通過AirtestIDE進行連接,Windows和MacOS版本IDE都可以使用。連接基本原理為:
具體步驟如下:
- 通過usb連接Android手機,確認
adb devices
連接ok,在電腦上執行如下命令,將手機的5003端口映射到電腦的5003端口
adb reverse tcp:5003 tcp:5003
- 在電腦上啟動broker:
python -m poco.utils.net.stdbroker "ws://*:5003" "tcp://*:15004"
啟動broker之后,在手機上訪問Egret的頁面(需要使用全屏模式保證坐標准確)。訪問的時候,broker會打印手機連接上的log,如下:
~ python -m poco.utils.net.stdbroker "ws://*:5003" "tcp://*:15004" server listens on ("0.0.0.0", 5003) transport websocket server listens on ("0.0.0.0", 15004) transport socket StdBroker on. server on accept. <poco.utils.net.transport.ws.MyWsApp object at 0x1100620d0>
- 打開AirtestIDE連接手機,選擇poco
Std-broker
模式,即可以看到UI層級結構。同時broker會打印連接日志:
server on accept. <poco.utils.net.transport.ws.MyWsApp object at 0x10d03d2d0> accept from: ('127.0.0.1', 56872) received_message from ('127.0.0.1', 56323) {"id":"2a0ce828-132e-4d15-a645-55493d7eaf4b","jsonrpc":"2.0","result":{"children"
AirtestIDE界面如下:
在AirtestIDE里編寫腳本並運行,還可以查看報告