不知道读者是否还记得,在“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