<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
遊戲裡有很多關卡(可能有幾百個了),理論上每次釋出到外網前都要遍歷各關卡看看會不會有異常,上次就有玩家在打某個關卡時卡住不動了,如果每個關卡要人工遍歷這樣做會非常的耗時,所以考慮用自動化的方式來實現。
遊戲的戰鬥是有時間限制的,到了 5 分鐘打不過就會判負,勝負都會出現結算面板,用 GA 提供的 find_element_wait 函數查詢這個結算面板,從進入戰鬥到找到了這個面板 element 就是通關時間,如果超過 5 分鐘了就說明被卡住了,最後輸出一張” 關卡通關時間表 “排序看看哪些關卡通關時間>5 分鐘即為有問題的關卡。
GAutomator find_element_wait 函數的說明
程式碼中設定 5 秒查一次結算面板,超過 60 次其實已經卡住了 。Page.panel_BattleRes 是結算面板,這裡採用 PO 模式把所有的 element 都寫入到一個 Page 中。
如果卡住 了遊戲會一直停在哪裡,卡住後利用 adb 指令重啟遊戲並繼續測試下一個關卡一直到遍歷整個關卡列表。
GAutomator 可以把遊戲裡的 C# 函數註冊過來然後在 python 中呼叫,這是 GA 說明檔案相關部分:
所以把遊戲中的 GM 指令方法註冊過去再在指令碼裡呼叫,這樣我才能用指令進入各關卡而不會受到等級、入口、前置關卡等限制
第一列是關卡 id,第二列是通關時間,100014 這個關卡是有問題的,因為已經超過 5 分鐘了
from testcase.tools import * from testcase.ExcelTool import ExcelReader,ExcelWriter from testcase.Page import Page class AutoBattle: def __init__(self,level_excel_path): self.start_time=0 self.levelList=ExcelReader(level_excel_path).read_first_sheet_first_col() self.excelWriter = ExcelWriter() print(self.levelList) def start_battle(self): self.start_time=time.time() m_btnStartGame = engine.find_element(Page.btn_BeginFight) screen_shot_click(m_btnStartGame) #auto fight m_autoFight = engine.find_element(Page.btn_AutoFight) screen_shot_click(m_autoFight) def test_each_level(self): for index,level in enumerate(self.levelList): print("關卡id---->"+level) engine.call_registered_handler("GoTo", "n"+level) #這裡呼叫unity裡的GM指令 self.start_battle() battleResult = find_element_wait(Page.panel_BattleRes, 65, 5) if (battleResult): screen_shot_click(battleResult) duration = str(int(time.time() - self.start_time)) # 關卡持續時間 self.excelWriter.write_excel(index, 0, level) # 第一列寫關卡名 self.excelWriter.write_excel(index, 1, duration) # 第二列寫通關時間 else: duration = str(int(time.time() - self.start_time)) # 關卡持續時間 self.excelWriter.write_excel(index, 0, level) # 第一列寫關卡名 self.excelWriter.write_excel(index, 1, duration) # 第二列寫通關時間 self.restart_game() self.default_login() find_element_wait(Page.btn_Battle) self.excelWriter.save_excel() def restart_game(self): #重啟遊戲 os.system("adb shell am force-stop %s"%Page.package_name) time.sleep(2) os.system("adb shell am start -n %s/.NativeUnityPlayerActivity"%Page.package_name) def default_login(self):#登入一次後續直接點選就可以登入 #m_BtnSart2 start_btn = find_element_wait(Page.btn_LogIn) screen_shot_click(start_btn) if __name__ == "__main__": ab = AutoBattle("level.xls") ab.test_each_level()
import xlrd import time import xlwt class ExcelReader: def __init__(self,excel_path): self.excel_path = excel_path; def read_first_sheet_first_col(self): data = xlrd.open_workbook(self.excel_path) st = data.sheet_by_index(0) col = [str(st.cell_value(i, 0)).replace(".0","") for i in range(0, st.nrows)] return col class ExcelWriter: def __init__(self): self.wb = xlwt.Workbook() self.sh = self.wb.add_sheet("關卡通過時間記錄") self.cur_col =0 def write_excel(self,row ,col,record_str): self.sh.write(row, col, record_str) def save_excel(self): date_string = time.strftime("%Y%m%d%H%M") excel_name ="TestResult"+date_string+".xls" self.wb.save(excel_name) if __name__=="__main__": ew = ExcelWriter() ew.save_excel()
這套指令碼可以排查出一進入或者中途被卡住或者不結算被卡住的問題,但是如果是某個怪物的某個技能必定能導致關卡卡住,而這個怪物在放技能之前就被殺了,這種情況這套指令碼有概率排查不到。
以上就是python遊戲測試工具自動化遍歷遊戲中所有關卡的詳細內容,更多關於python遊戲測試自動化遍歷關卡的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45