上一篇用airtest框架作了一個夢幻西遊手遊的DEMO,此次看看poco的強大之處。
首先安裝poco:
pip install pocouihtml
其次,把SDK集成到你家遊戲中,我這直接用官網提供的一個Unity引擎作的遊戲demo,demo下載地址&用法示例:https://poco.readthedocs.io/zh_CN/latest/source/doc/poco-example/index.htmlgit
打開AirtestIDE,新建一個項目,鏈接手機或模擬器,打開遊戲。在IDE左下的Poco輔助窗下拉列表選擇Unity,此時在代碼編輯區上方會有提示,是否自動插入相關代碼,點Yes。
此時Poco輔助窗下面已經顯示UI樹了,相信之前搞過uiautomator、Robotium、Appium等的朋友會很是熟悉。選中一個元素,在Log區會顯示該元素的屬性。
github
如今能夠寫腳本了,手寫的話,在UI樹上雙擊一個元素能夠自動插入該元素的對象語句,如上圖,雙擊btn_back,會自動插入poco("btn_back")。也能夠錄製,點擊Poco輔助窗下面的錄製按鈕(錄像機圖標),而後點擊遊戲界面上的返回按鈕,會自動生成poco("btn_back").click()。shell
若是遊戲界面一直在刷新,UI樹一直在變,點擊錄製按鈕前面的鎖,能夠鎖定界面,方便查看元素。框架
點擊錄製按鈕前面的圓圈按鈕(inspector),以後在Device Screen上左擊或右擊元素,也能夠很方便的查看元素,效果和在UI樹看是同樣的。ide
另外poco提供了一套單元測試框架pocounit,用法和unittest同樣(應該就是基於unittest寫的),更重要的是——使用pocounit編寫的用例將能夠經過其提供的回放工具對測試過程進行完整的回放,不會漏掉任何細節。視頻以下:
http://top.gdl.netease.com/poco-res/video/result_player_demo.mp4工具
好了,看一下針對遊戲demo寫的幾行代碼:
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()單元測試
poco("btn_start").click() # 點擊start按鈕
poco("basic").click() # 點擊basic按鈕
poco("star_single").long_click(duration=3) # 長按五角星
poco("pos_input").set_text('測試輸入文字') # 輸入文字
sleep(3)
poco("btn_back").click() # 點擊back按鈕
sleep(1.0)測試
poco("drag_and_drop").click() # 點擊drag drop按鈕
shell = poco("shell").focus('center') # 定義貝殼對象
for star in poco("star"):
star.drag_to(shell) # 循環將五角星拖到貝殼
poco("btn_back").click() # 點擊back按鈕 ui
poco("list_view").click() # 點擊list view按鈕
poco("Scroll View").swipe([0, -1]) # 將列表向上滑動
sleep(2.0)
poco("Text (12)").click() # 選中列表最後一項
poco("btn_back").click() # 點擊back按鈕
poco("wait_ui").click() # 點擊Wait UI按鈕
count = 0
while True:
yellow_fish = poco("yellow") # 定義黃魚
blue_fish = poco("blue") # 定義藍魚
fish = poco.wait_for_any([yellow_fish, blue_fish]) # 等待魚出現
fish.click() # 點擊魚對象
sleep(1.0)
放上回放腳本時的錄製視頻,你們能夠感覺一下,爲了看的更明瞭一點,我在手機開發者選項中打開了‘顯示點按操做反饋’、‘指針位置’:
https://v.qq.com/x/page/p071278u6gc.html
能夠看到,腳本最後一塊,等待魚出現,而後點擊魚,代碼有運算時間,發送的adb命令有執行時間,可是遊戲的魚很快飛過,致使點擊時,魚其實已經飛過去了,不知道換模擬器會不會好一點。
腳本源碼:
https://github.com/songzhenhua/airtest
最後再次附上Poco文檔地址和demo示例地址:
https://poco.readthedocs.io/zh_CN/latest/index.html#
https://poco.readthedocs.io/zh_CN/latest/source/doc/poco-example/index.html