Chinaunix首页 | 论坛 | 博客
  • 博客访问: 286095
  • 博文数量: 115
  • 博客积分: 1951
  • 博客等级: 上尉
  • 技术积分: 728
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-26 14:05
文章分类

全部博文(115)

文章存档

2013年(4)

2012年(3)

2011年(26)

2010年(56)

2009年(26)

我的朋友

分类: 项目管理

2010-04-09 07:58:55


QTP 识别对象原理
QTP对每个控件类都定义了一些强制属性和辅助属性。当qtp对对象进行识别的时候,首先qtp会取出控件的所有强制属性,如果这些强制属性能够唯一标识这个控件则选强制属性来标识控件,如不能唯一标识控件,qtp则逐一取出控件类的辅助属性直到能唯一标识控件为止。如果使用强制属性和辅助属性还不能唯一标识控件。 则有以下两种可能:
QTP对控件类的识别使用了智能识别(Smart Identificati
on),qtp会忽略之前对强制属性与辅助属性的识别,这时qtp会使用smart identification 中的 basic filter properties和optional filter properties来对对象进行识别. basic filter properties就是一些控件的基础属性,例如button的Name,这个属性变了button也就变成另外一个button了。如果对控件类的识别没有使用Smart Identification,系统会使用Ordinal Identifier来对控件进行识别。
识别对象使用的属性顺序:
顺序如下:
mandatory properties->assistive properties -->Smart Identification ->ordinal identifier
在QTP中点右键查看对象属性时,识别的顺序如下
>>> Description properties(即nomal变通的识别属性)
>>> Additional details(额外内容,其中有“Enable Smart Identification”智能识别)
>>> Ordinal identifier(顺序标识符,如Creationtime,index等等,有些系统中,如果使用了智能识别,则此项将没有作用)
注意,如果Creationtime,index等用描述性的方式写到脚本中,则算作是Description properties,即会首先用来识别对象。
控制智能识别的开关
1.
设置整个测试或一些控件不应用智能识别
如果是要在脚本执行过程中禁用所有的智能识别,那只需要在开头加上
Dim App
Set App = CreateObject("QuickTest.Application")
App.Test.Settings.Run.DisableSmartIdentification = True
如果只是要禁用部分对象的智能识别,比如禁用WebEdit的智能识别,则用
Dim App
Set App = CreateObject("QuickTest.Application")
App.Options.ObjectIdentification("webedit").EnableSmartIdentification = False
同样,禁用Browser的智能识别就是
App.Options.ObjectIdentification("browser").EnableSmartIdentification = False
2.
通过手动设置QTP工具控件智能识别
>>只针对当前测试:
File –> Setting –> Run ,把“Disable Smart Identification during the run session”前面的复选框选上,则不当前测试不支持智能识别,反之支持。
>>修改智能识别设置:
Tools –> Object Identification,可以通过设置“Enable
Smart Identification”和“Configure”来改变智能识别设置。

注,理解这些原理对于处理一些控件总是不能识别的问题挺有帮助。如一个控件需要用index来识别,但是QTP总是先进行智能识别,这时就有可能出错了。
本人实验过,有些系统会有出错,但有些系统却不会。
 
转载请注明源自,请保留版权. 本贴地址:
 
阅读(1500) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~