Files
Main/Assets/Editor/DIY/QATool/RecordTest.cs

137 lines
3.5 KiB
C#
Raw Normal View History

2025-01-25 04:38:09 +08:00
/*
Creat By LuoJiasi;
Plz Put in DIY File;
*/
using System.Collections.Generic;
using System.Text;
using UnityEditor;
using UnityEngine;
using System.Collections;
using System.IO;
using System;
using NUnit.Framework;
using Thousandto.Core.Base;
using Thousandto.Code.Center;
using System.Linq;
using CoroutinePool = UnityEngine.Gonbest.MagicCube.CoroutinePool;
namespace Funcell.DIY.UniScene
{
public class RecordTest : EditorWindow
{
[MenuItem("Ares/测试工具/录制操作")]
static void Init()
{
var win = (RecordTest)EditorWindow.GetWindow(typeof(RecordTest));
win.Show();
win.titleContent = new GUIContent("录制操作");
}
#region
protected string _now = DateTime.Now.ToString ("yyyy-MM-dd/") + DateTime.Now.ToString ("HH:mm:ss");
protected string _logplace = "D:/TestCase/RecordResult.txt" ; //Log存储位置
private int recordStatus = 0;
public List<GameObject> btnlist = new List<GameObject>();
private List<GameObject> allbtnlist = new List<GameObject>();
//测试结果记录到txt文件中文件地址为_logplace
protected void LogTest(string resultfile)
{
if (!File.Exists(_logplace))
{
File.WriteAllText(_logplace, "[Record Start]\r\n");
}
File.AppendAllText(_logplace,resultfile + "\r\n");
Debug.LogWarning(resultfile);
}
#endregion
private void OnGUI()
{
if(GUILayout.Button("录制操作"))
{
recordStatus = 0;
LogTest("【开始录制】");
CoroutinePool.AddTask(AutoRecord());
}
if(GUILayout.Button("停止录制"))
{
recordStatus = 1;
}
}
private IEnumerator AutoRecord()
{
while (recordStatus == 0)
{
GetBtn();
List<GameObject> reslut = btnlist.Except(allbtnlist).ToList();
if (btnlist == null)
{
yield return new WaitForSeconds(0.1f);
}
else if(reslut == null)
{
yield return new WaitForSeconds(0.1f);
}
else
{
allbtnlist.AddRange(reslut);
for (int i = 0; i < reslut.Count; i++)
{
UIEventListener.Get (reslut[i]).onClick += OnClick_Record;
}
reslut.Clear();
}
yield return new WaitForSeconds(0.1f);
if (recordStatus == 1)
{
LogTest("【停止录制】");
yield break;
}
}
}
public void GetBtn()
{
GameObject go = GameObject.Find ("UIRoot");
btnlist.Clear ();
foreach (UIButton obj in go.transform.GetComponentsInChildren<UIButton>())
{
btnlist.Add(obj.gameObject);
}
}
private void OnClick_Record(GameObject go)
{
UILabel label = go.transform.GetComponentInChildren<UILabel>();
if (label)
{
LogTest("ClickBtn," + GetBtnFullName(go) + "," + label.text + ",");
}
else
{
LogTest("ClickBtn," + GetBtnFullName(go) + ",");
}
}
private string GetBtnFullName(GameObject obj)
{
string fullname = obj.name;
GameObject pa_obj = obj.transform.parent.gameObject;
for (int i = 0; i < 10; i++)
{
if (pa_obj.name.Contains("UIRoot"))
{
break;
}
if (pa_obj.name.Contains("[Chain]"))
{
break;
}
fullname = pa_obj.name + "/" + fullname;
pa_obj = pa_obj.transform.parent.gameObject;
}
return fullname;
}
}
}