前言:个人计划给项目引入游戏自动化,到时候想用 po 模式搭建游戏的自动化框架,用于自动化冒烟测试、性能采集等等。
测试场景:分别用两个工具实现从主界面到进入副本战斗的流程,记录各自执行的时间进行对比(两个工具都接了 SDK 直接找控件来实现自动化)。
详细内容:主界面点击【战斗】--->点击【主线】--->点击【第一章】--->点击【进入】-->点击【开始】开启战斗。
(游戏没上线,上述流程的游戏录频就不放了)
测试设备:雷电模拟器
测试工具:Airtest GAutomator
测试脚本:
Airtest 脚本:
# -*- encoding=utf8 -*-
import time
start = time.time()
from airtest.core.api import *
auto_setup(__file__)
from poco.drivers.unity3d import UnityPoco
poco = UnityPoco()
def timer(func):
def count_time(*args,**kwargs):
start = time.time()
func()
end = time.time()
print(str(func.__name__)+"运行时间:"+str(end-start))
return count_time
@timer
def go_battle():
poco("m_BtnBattle").click() #点击【战斗】按钮
sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
poco("m_BtnThread2").click() #点击【主线】按钮
sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
poco("m_ChapterIcon_0").click() #点击【第一章】
sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
poco("m_BtnEnter").click() #点击【进入】
sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
poco("m_BtnFight").click() #点击【开始】进入战斗
sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
go_battle()
print(time.time()-start)
GAutomator 脚本:
import time
start= time.time()
import wpyscripts.manager as manager
from wpyscripts.tools.basic_operator import find_element_wait
def timer(func):
def count_time(*args,**kwargs):
start = time.time()
func()
end = time.time()
print(str(func.__name__)+"运行时间:"+str(end-start))
return count_time
@timer
def go_battle():
engine = manager.get_engine()
button_battle= find_element_wait("m_BtnBattle") #点击【战斗】按钮
engine.click(button_battle)
time.sleep(1) #在每一次操作中间休眠1秒方便组件先实例化
button_chapter= find_element_wait("m_BtnThread2") #点击【主线】按钮
engine.click(button_chapter)
time.sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
button_chapter_0= find_element_wait("m_ChapterIcon_0")#点击【第一章】
engine.click(button_chapter_0)
time.sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
button_start = find_element_wait("m_BtnEnter") #点击【进入】
engine.click(button_start)
time.sleep(1) # 在每一次操作中间休眠1秒方便组件先实例化
button_fight =find_element_wait("m_BtnFight") #点击【开始】进入战斗
engine.click(button_fight)
go_battle()
print(time.time()-start)
时间对比
测试结论:从数据对比来看 airtest 要略胜一筹,但是我在测试过程中明显感觉 GAutomator 查找结点的速度要快很多,有时候界面一切换按钮节点还没有完全加载就实现了点击,所以后续再多对比对比再做决定。