51Testing丛书连载:(十三)精通QTP——自动化测试技术领航

发表于:2012-1-05 13:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余杰 赵旭斌    来源:51Testing软件测试网

分享:

  不知道读者是否还记得,在“1.3.4 QTP回放机制”那个章节里提到过智能识别这个概念,在Object Identification里也有智能识别的设置按钮,在这里作者介绍下这个功能,并对QTP的智能识别做一些“合理的解释”。我们先来看下Object Identification里的这个智能识别设置功能,如图1-56所示。

图1-56

  首先,我们可以看到,在所有的Web对象模型里,每个对象默认是允许智能识别的(而Standard Windows对象模型里的各类对象默认是不支持智能识别的),在这里的智能识别功能和“1.3.4 QTP回放机制”那个章节里提到的智能识别功能区别在于,这里的智能识别功能针对的是对象模型下的某一个具体对象,举个例来说,比如可以让WebEdit对象开启智能识别,但是不让WebCheckBox对象开启,而那个章节中的智能识别是一个总开关,假设这个总开关是打开的,那么例子中的情况就是WebEdit控件可以智能识别,而WebCheckBox控件则不行,那么假设这个总开关是关闭的,则在Object Identification里无论你怎么设置,任何对象控件都不会智能识别,务必别搞乱了!

  其次,在Object Identification里,如果某控件开启智能识别(仍然借用WebEdit对象为例),我们还可以对可智能识别的属性进行设置,如前面的图1-56中,点击Configure按钮就可以弹出设置框,设置框效果如图1-57所示。

图1-57

  从图1-57中可以看到,已经打开了WebEdit对象模型的智能识别设置窗口,左侧的列表中是这个对象默认的基本智能识别属性,这个列表中的一切属性是即刻生效的(即会首先智能识别这些基本属性),而右侧列表是备用属性,暂时是不会生效的,只有当左侧基本属性列表中的属性全部使用过后,仍然没有识别到的情况下才会生效,QTP会根据备用属性列表中的属性按着设定好的属性顺序来一个个继续智能识别,直到匹配到为止,当然连所有备用属性都不能识别后QTP就会报错了。这里需要注意的是,每个对象模型的默认智能识别属性都是不同的。在做项目的时候,一般使用这些默认的设置即可以应付绝大多数情况,毕竟这些默认设置都是Mercury公司设计出来的,相信他们也是考虑再三的,肯定具备一定道理和权威性。

  最后,在了解了Object Identification里的智能识别相关功能和回顾了之前的智能识别功能后,现举一个实例来让读者明白,智能识别这个功能究竟是什么?在项目应用中启用了智能识别后会发生什么?

  实例:

  先说个基本概念和原理,运用智能识别后,QTP在遇到对象识别出问题的时候,会尝试应用智能识别(Smart Identification),如果智能识别能定位出对象则继续执行脚本,反之则报错并提示错误信息,下面看一下这个示例脚本:

Browser("51Testing软件测试网-中国软件测试人的精神家园")._

Page("51Testing软件测试网-中国软件测试人的精神家园")._

Image("51Testing软件测试网").Click

  注:以上脚本来源于51Testing软件测试网首页,如图1-58所示。

图1-58

64/6<123456>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • lyscser
    2012-2-13 09:52:44

    你理解没错,作者说得也没错,不过你在扣字眼子……
    对象库文件其实是一组map,QTP抽取的对象属性都在里面拼接并且封装,生成对象库对象
    对象识别时,根据用户选择这组map中的其中几个元素或节点去被测应用中寻找UI组件
    你说的模型是一个方法上的模型,就像数学的公式,只是一串符号、是概念上的模型;
    而作者说的模型是我说的这组map,它是公式的实例化方法,不仅仅停留在概念上

    不知道你理解否

  • kerwin_woo
    2012-2-12 23:06:33

    让人受益匪浅的一本书。我是一个初学者,书里面有一个问题让我有些纠结,求大侠们帮忙解决一下。就是连载的第十三章第2页,作者讲到(每个对象模型都有一个可以唯一标识对象的关键属性列表,我们将前面这些连起来一块说,就是在添加对象至对象库后,QTP自动建立被添加对象的对象模型,并给出一个默认识别标识。然后,每个对象模型都有一个可以唯一标识对象的属性列表,这个属性列表是可以设置的,它就是Object Identification)。我个人认为的是,这些对象模型其实在我们没有添加对象的时候就已经有了,就是在我们导入插件的时候,这些模型就出现了。我做过这样一个实验,就是如果不选web插件,那么在object identification里面就不会有相应的web edit之类的模型。我认为模型嘛,也就是跟模版一样,根据模型来创建对象,我们加入的对象是在这个模型的基础上建立的,所以它必须具备这个模型的基本属性。不知道我表述清楚没。希望各位专家能够带领在下走出误区,能够对在下的理解给出肯定或是否定,非常感谢~~~~~支持51testing

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号