位置:励普教育 > 品牌宣传 > 软件评测师WinRunner处理不识别对象的四种方法  正文

软件评测师WinRunner处理不识别对象的四种方法

2023-05-26 11:27:18来源:励普网


(资料图片仅供参考)

在WinRunner(以下简称WR)的实际项目中,对象不识别的情况非常频繁,但如何去处理这些对象,可能有些朋友还不知道一些技巧,因此想借此文跟大家分享一些东西,希望对大家有用。

在做自动化测试项目时处理WR的不识别对象时,我一般按四步走:1加载相关插件2对象映射3自定义函数4自定义插件/建虚拟对象

首先说一下为什么要这么处理

1加载相关插件,这主要是因为加载插件的速度最快,效果也最好(优先级较高)

2对象映射,这主要是因为你可以牵一发而动全身,全局性很好(优先级排第二)

3自定义函数,这主要是因为自定义函数的灵活性比较大,可操作性强

4自定义插件,也就是通俗的讲通过编写DLL来实现工具的扩展,因为其技术难度比较大,而且效果也不是非常好(除非你有深厚的Windows底层编码能力),但插桩类的自定义插件会好些,所以只有当前三个办法失效的情况下才采用;而建虚拟对象,和自定义插件并列最后,主要是因为他的移植性不好,但如果前三种方法失效并扩展DLL自己有技术又有难度,那么我更推荐用虚拟对象。

然后我们来详细说说如何进行操作:

1,加载相关插件在启功WR时会出现一个插件选择窗体,可以选择你想要的插件,如果没有,可以到WR的主界面的Tools“GeneralOptions“Startup里面的DisplayAdd-inManager,勾选上这个选项后就可以在下次打开WR时弹出插件加载提示了。

2,对象映射,在WR的主界面里选择TOOLS-GuiMapConfiguration- Add- 将手型按钮指向你所要映射的对象上后单击,然后点OK,回到GuiMapConfiguration界面点Confige,到ConfigeClass界面对映射的对象进行一个配置,比如映射到的目标对象类,这里大家要注意一点:当前要进行映射的对象必须有目标对象类的基本特征,例如你不可以把一个编辑框映射到按扭上去;还有我们一般会把MSM-ID删掉,因为他老是会变,导致脚本回放不成功。这里配置的主要原则是用尽量少的属性描述对象,最后需要把GeneratedTSLScript里的内容拷贝到固定位置,比如你的测试工程的初始化代码文件里,为什么要拷贝到那里呢?因为如果你不保存,以后你每次更换WR环境时都要再进行同类的配置,非常的烦琐。

3,自定义函数这里主要分两块:相对坐标和键盘模拟,相对坐标的思想是取到特定对象的相对坐标,然后通过坐标对对象进行各种操作;而键盘模拟则是通过模拟敲击键盘来实现对对象的操作(前提条件是对象必须可以被键盘操作到)。这里我给两个实例:

#***********************************

#

#Description---------ThisfunctionisusedtoLEFTClickanObject

#

#Parameter-----------win---WindowName,obj---ObjectName

#

#ReturnValue-------None

#

#Tester----------------LantainWei

#

#***********************************

publicfunctionObj_LClick(inwin,inobj)

{

autoobj_width,obj_height;

set_window(win);

obj_get_info(obj, width ,obj_width);

obj_get_info(obj, height ,obj_height);

obj_mouse_click(obj,int(obj_width/2),int(obj_height/2),LEFT);

}

#***********************************

#

#Description---------Thisfunctionisusedtoselectitemfromalist

#

#Parameter-----------obj---ObjectName,sItem---Itemwhichyouwantselected

#

#ReturnValue-------None

#

#Tester----------------LantainWei

#

#***********************************

publicfunctionList_Select(obj,sItem)

{

autosText;

obj_get_text(obj,sText);

while(match(sText, * sItem * )==0)

{

obj_type(obj, kDown

obj_get_text(obj,sText);

}

}

4,自定义插件该方法涉及到的方面比较多,这次就不细说,下次我再整理一下,再写一篇关于自定义插件的文章,这次主要讲一下虚拟对象的创建。具体的操作我就不细说,大家可以参看WR的帮助,这里我只想告诉大家注意一点:你要创建的虚拟对象必须有你虚拟成的类的基本特性,具体的解释和映射相似。

最后我想说明的一点,不要盲目崇拜脚本的通用性,可移植性。比如有时你可以通过一个简单的坐标设置就可以操作到对象,那就没有必要再写一大堆脚本来操作对象,虽然这样做通用性和可移植性上去了,但维护性和成本也同样上去了。自动化测试的目的降低成本,快速准确测试,任何背离这两项原则的大家都可以放弃,所以以上方法大家还需要根据实际项目来进行对待。


温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!