Airtest Poco遊戲自動化測試

2021-09-28 18:38:17 字數 1402 閱讀 7045

框架工具選取

airtest + poco

poco外掛程式可以準確地定位到當前遊戲畫面上的元素在實際ui結構樹中的位置,還能夠獲取到這個按鈕的名字、座標等詳細資訊,並且我們還能通過編寫一定的篩選語句來獲取到這個按鈕,並對它進行相應操作。

例如:poco(「go」).click() #"go"是按鈕的名字

這是乙個簡化的原理圖,對比了airtest和poco的操作原理:

可以看到,poco最大的區別就是多了乙個poco-sdk模組,我們需要將poco-sdk嵌入到被測遊戲中,才能夠順利地獲取到ui結構樹,從而進行接下來的解析和處理操作。

如何接入poco

zmg課件使用cocos 2dx-js引擎,接入細節請參考官方文件

3.自動化demo**位址

如何編寫自動化指令碼

ui測試框架結構

1.課件自動化框架與ui自動化框架結構相同採用pageobject設計模式,將用例,操作,元素解耦。

整體框架分為3層

2.元素層

元素層負責管理頁面元素屬性,所有頁面控制項元素在zmg_ui_auto\view\zmg.xml中新增(以便後期維護,頁面元素定位屬性變化,只需在zmg.xml檔案做相應的改變)

新增方法

例如: 下方**中activity name代表對應課件 elementname 代表控制項名稱 pathtype代表通過什麼方法搜尋元素 pathvalue代表改控制項對應屬性的值

ddx button name ddx 3.controller層

頁面操作方法在controller中新增

將所有zmg課件公用的操作方法(如翻頁)新增到zmg_common_controller檔案中

將zmg課件獨有的操作方法新增到zmg_課件名_controller(如 「掌門玩具展 」 課件獨有的操作新增到zmg_掌門玩具展_controller中)

4.case層

case層負責呼叫controller層的方法 記錄結果

在zmg_ui_auto\tests中加新用例,每個課件對應乙個測試檔案

編寫用例需在用例中新增assert斷言,確保用例執行與預期結果一致

程式流程

1.在cmd視窗執行"python -m poco.utils.net.stdbroker ws://:5003 tcp://:15004"(開啟poco**)(後期需要調研是否能通過程式實現)

2.使用selenium webdriver啟動瀏覽器並且開啟對應課件,poco根據視窗title用正則匹配連線(後期可優化)

3.因為課件特殊性操作分為2部分

遊戲介面控制項元素用airtest+poco定位操作

自動2048遊戲

前段時間公司開發了2048小遊戲,看見排行榜都是幾萬分數,奈何手殘就編寫了個程式來自動刷,使用指令碼語言編寫。思路為識別各個數字的顏色獲取數字位置,再計算上向左右最大分數,選其最大分數移動,結果測試最大分數也就6000左右。後來發現2048也是需要策略的,便從github選擇了2048ai,go版本...

unity 遊戲報錯時,讓遊戲自動暫停

為什麼要讓遊戲報錯時,遊戲自動暫停呢?這麼做的意義是什麼呢?事情是這樣的,今天,遊戲測試組報了乙個錯,說是遊戲存檔存不上,每次開啟,都是從頭開始。正常的思維,應該是推斷,就是存檔的問題,因為存檔存不上,不是存檔的問題,是什麼問題?難道還是某個 錯誤引起的?別說,我和老霍一點點的查問題出在 最後,還真...

演算法實現自動掃雷遊戲

1.遊戲的構思 2.演算法偽 的實現 3.演算法的實現 1.首先需要建立起遊戲的整個框架 棋盤的繪製,地雷的生成,基本函式的實現等 2.構思ai演算法的大概樣貌 先嘗試寫偽碼 voidai ai演算法 if first selectrandompos 遊戲開始隨機選擇一處位置翻開 selectpos...