基于Python Pocoui庫的自動化錄制架構
遊戲可以寫一些腳本驅動遊戲自動化測試,其自動化原理基本和Appium測試手機APP基本一樣,可以通過相應的驅動解析出相應的目錄結構,是一棵樹,樹的大小基本和遊戲中存在的内容有關。
poco庫的原理就是遊戲運作過程中通過ADB指令擷取到這些樹,進行解析,找到代碼中的節點進行操作。前期通過AirtestIDE寫一些腳本,發現有如下幾個問題。
1.目錄樹結構太多,顯示在頁面上層級過多,難以把控。
2.驅動過慢,自動化腳本驅動程式運作慢,尤其是在擷取UI樹的時候,會卡頓,影響程式性能。
3.相應節點都寫在代碼上,代碼可維護差,且代碼重複性高。
前期也寫了一些周遊架構、及探索自動化架構但效果不怎麼理想,開發一套屬于自己的自動化錄制架構勢在必行。經過相應的研究,及前期的技術積累。開發了自動化錄制架構,其架構有以下優點。
1.支援錄制,即在使用者點選過程中測試用例的生成。
2.自動解析可點選節點,并渲染到遊戲截圖上。
3.采用坐标點選方式,點選過程不在周遊UI樹,遊戲運作過程和人工點選效果相似。
使用方式如下:
1
2
3pip install -r requirements.txt
python main.py
相應的運作過程:
程式自動擷取目前遊戲畫面并标記所有可點選節點。
指令視窗将會提示使用者點選哪一個節點,并提示節點的名字。
使用者選擇節點後程式将會模拟使用者進行執行,此時點選步驟已經被記錄。
詢問是否達到預期效果
屬于步驟将被寫入測試用例中。輸入其它不被記錄,防止出現點選出錯的情況。
最後導出測試用例,大約是這個樣子。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26{
"author": null,
"gameName": "test2",
"steps": [
{
"name": "BtnBgEnter",
"pos": [
0.5,
0.889444351
],
"type": "Button",
"sleep": 12
},
{
"name": "BtnBag",
"pos": [
0.9213542,
0.0379629247
],
"type": "Button",
"code": "print('open bag')"
},
],
"originPage": null,
"executeTime": 0
}