版權聲明:允許轉載,但轉載必須保留原鏈接;請勿用作商業或者非法用途
由於游戲的界面是通過游戲引擎渲染出來的,游戲界面沒有系統原生的控件信息,所以對於游戲,我們需要接入 poco-sdk 才能獲取到游戲界面中的控件信息。下面以Unity開發的手游為例,介紹如何在Android和iOS平台進行連接。
Android 平台
- 從 poco sdk repo 將
Unity3D
這個文件夾克隆下來。
- 將克隆下來的
Unity3D
文件夾放置於你的Unity項目的Assets/Scripts
文件夾下。
- 將
Assets/Scripts/Unity3D
目錄下以未用到的UI系統命名的文件夾刪除。例:假如您的項目使用的UI系統是ugui
,請將fairygui
和ngui
兩個文件夾刪除,保留ugui
文件夾。
-
在
Unity3D
中打開您的項目,並將Unity3D/PocoManager.cs
作為一個script component
添加到您的GameObject
中,要求掛載在一個永不銷毀的對象下,比如通常情況下的主相機。舉例: 點擊
demo
這個場景下的Main Camera
, 會在右方出現inspector
界面,點擊inspector
界面當中的Add Component
。在彈出的對話框中輸入
poco
,選擇出現的Poco Manager
這個選項。完成后會在
inspector
界面出現如圖所示的component
。 -
點擊界面左上角
File->Build Settings
, 生成一個合適的安卓包,並安裝到您的手機上。
- 啟動
Airtest IDE
,按照上文所述將Airtest IDE
與您的手機鏈接,並啟動對應的游戲。
- 在左下角的
Poco輔助窗
中選擇Unity
模式,即可看到當前界面的UI樹結構:
- 在選擇
Unity
模式之后,Airtest IDE
會自動插入poco的初始化代碼:
之后的腳本編寫,就可以利用Poco提供的API對游戲界面上的元素進行操作了。
下面是一個簡單的測試用例。您可以從這里下載這個簡單的Unity3D小游戲。在安裝完成后,打開游戲后點擊Start
再點擊drag drop
會出現如下所示的界面。
每將一顆星星拖動到屏幕中心的貝殼上,將得到20分;如果將5顆星星依次拖動到貝殼上,那將獲得100分。下面的腳本就是在測試依次拖動5顆星星是否會得到100分的分數。
from airtest.core.api import * auto_setup(__file__) from poco.drivers.unity3d import UnityPoco poco = UnityPoco() poco('btn_start').click() time.sleep(1.5) poco('drag_and_drop').click() shell = poco('shell').focus('center') for star in poco('plays').offspring('star'): star.drag_to(shell) time.sleep(1) assert poco('scoreVal').get_text() == "100", "score correct." poco('btn_back', type='Button').click()
點擊運行腳本按鈕,就會得到如下所示的結果。
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上的游戲編寫自動化測試腳本了。