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的帮助,这里我只想告诉大家注意一点:你要创建的虚拟对象必须有你虚拟成的类的基本特性,具体的解释和映射相似。
最后我想说明的一点,不要盲目崇拜脚本的通用性,可移植性。比如有时你可以通过一个简单的坐标设置就可以操作到对象,那就没有必要再写一大堆脚本来操作对象,虽然这样做通用性和可移植性上去了,但维护性和成本也同样上去了。自动化测试的目的降低成本,快速准确测试,任何背离这两项原则的大家都可以放弃,所以以上方法大家还需要根据实际项目来进行对待。
雅思 托福 GRE IB SAT GMAT A-Level ACT 多邻国英语测试 OSSD 英语四六级 出国英语 词汇 AEAS 英语口语 商务英语 考研英语 青少英语 成人英语 个人提升英语 高中英语 剑桥英语 AP课程 一级建造师 二级建造师 消防工程师 消防设施操作员 BIM 造价工程师 环评师 监理工程师 咨询工程师 安全工程师 建筑九大员 注册电气工程师 一级注册建筑师 公路水运检测 通信工程 装配式工程师 二级注册建筑师 PLC智能制造 智慧消防工程师 智慧建造工程师 全过程工程咨询师 EPC工程总承包 碳排放管理师 应急救援员 初级会计师 中级会计师 注册会计师(cpa) CFA ACCA CMA 基金从业 证券从业 会计证 初中级经济师 薪税师 会计实操 企业合规师 FRM 会计就业 教师资格 食品安全管理师 人力资源管理 乡村规划师 心理咨询师 健康管理师 家庭教育指导师 普通话 公共营养师 物业经理 网络主播 专利代理师 教师招聘 少儿编程 书法培训 绘画美术 音乐 舞蹈 棋类 国画 乐器 击剑 机器人编程 小孩子注意力训练 儿童专注力 体适能 少儿小主播 信奥赛C++ 篮球 羽毛球 足球培训 嵌入式培训 软件测试 Web前端 linux云计算 大数据 C/C++开发 电子商务 Java开发 影视后期 剪辑包装 游戏设计 php 商业插画 产品经理 Python photoshop UXD全链路 UI设计 室内设计 电商视觉设计 IT认证 PMP项目管理