新人第一次发帖,本文是这两天实操过程的总结,本人经验有限难免有考虑不周全的地方,欢迎各位指正。 这一章主要讲述以下内容: 1.使用天使插件测试工具测试游戏后台模式。
2.TC结合天使插件后台绑定LOL登录,执行简单的键鼠操作。
1.1天使插件测试工具测试游戏后台模式
本章以LOL登陆功能为例展开论述。为简单起见,先考虑如何通过天使插件测试工具对游戏进行后台操作,然后再考虑TC代码如何实现。如何才能通过后台操作的方式在账号和密码处填入数据呢,我们必须确定下面的信息: (1) 窗口句柄 (2) 窗口后台鼠标和键盘模式 (3) 账号和密码输入框的相对坐标
1.2 代码实现自动登录LOL(TC API)
上文已使用天使插件测试工具确定了绑定模式并得到一个很重要的结论:若要对某界面元素进行操作,必须绑定该界面元素所在的窗口,绑定其父窗口是无效的。,第二节要在代码中实现上文的后台操作效果。我们知道要后台输入账号密码必须绑定子窗口329466,而游戏程序每次启动其窗口句柄都不同,所以必须先实现一段代码找到需要绑定的窗口句柄。我们在按键抓抓中可以看到登录界面窗口的嵌套关系,
窗口1(顶层):标题为“英雄联盟登录程序”,其类名每次启动均变化。 窗口2(中间): 其类名为“MacromediaFlashPlayerActiveX”,标题为空。 窗口3(内层): 其类名为“TWINCONTROL”,标题为空。
1.3代码实现自动登录LOL(天使插件)上一节的代码使用的是TC API,其中system.enum(handler,3)枚举了所有handler的子孙窗口句柄,而其所有子孙窗口(包括不可见窗口)中只有一个子窗口的类名为TWINCONTROL,因此我们逐个比对子窗口的类名很顺利就找到需要绑定的窗口句柄。现假设有这么一种情况,有若干个子窗口其类名相同而标题为空或者类名为空标题相同,我们需要绑定靠后面的那个窗口。看下图
上图红框内的窗口类名都是ReBarWindow32,标题都是空,现假设我们需要绑定00658606。假如我们使用 system.enum( 655592,3 ) 枚举所有子孙窗口,那枚举出来的就有不止一个类名为ReBarWindow32的窗口。你说按照顺序来判断?我们只需要从枚举的列表中找到第二个类名为ReBarWindow32的窗口即可。我们进一步假设更复杂的情况,上面的树没有完全展开,如果在1378490的子孙窗口中有不止一个类名为ReBarWindow32,并且有一些是不可见的。如果在724112后面还有兄弟窗口,这些兄弟窗口也有若干子孙窗口类名为ReBarWindow32。那要分析system.enum( 655592,3 )所枚举到的列表就变得很困难了,你必须清楚enum函数是深度优先还是广度优先还有到底有多少个类名为ReBarWindow32的窗口是不可见的,这种处理方法很让人抓狂。下文来探讨另一种做法。
|