除了学习在Object Identification对话框中((Tools
> Object Identification))规定的强制性和辅助属性,QuickTest还可以了解每一个测试对象的备份顺序标识,分配给对象的数字ordinal identifier与其他对象的an otherwise identical description有关(在mandatory
and assistive property的列表中指定的对象的所有属性值都一样)。定制的值使QuickTest创建一个唯一的描述当mandatory and assistive属性不能满足时.
QTP只有在得到描述和Smart Identification机制不能足够唯一识别一个对象的时候,才会使用an ordinal identifier机制。如果QTP在运行一个会话时能使用其他测试对象属性去识别对象的,an
ordinal identifier将会被忽略
Index.表示对象出现在应用程序代码中相对于其他对象具有的不一样的描述顺序
Location.表示对象出现在父Window,Frame,Dialog的顺序不同于其他对象的唯一描述
CreationTime.(仅适用于浏览器)被打开浏览器顺序相对于其他打开的浏览器具有唯一的描述
使用Index属性识别对象
当QTP得到一个对象时,会分配一个值给测试对象的index属性使其能唯一的识别这个对象。这个值是基于对象在源代码中出现的顺序分配的。第一次出现的值为0
Indexproperty values are object-specific。因此,当你使用index:=3去描述WebEdit测试对象时,QTP就会在页面中搜索第四个WebEdit对象。而如果使用index:=3描述一个WebElement对象时,QTP就会搜在页面中搜索第四个web对象,与对象的类型无关,因为WebElement对象适用所有web对象。
· an image with the name Apple
· an image with the name UserName
· a WebEdit object with the name
UserName
· an image with the name Password
· a WebEdit object with the name
Password
下面中的陈述指列表中的第三项,因为这是页面上第一个名称为UserName的WebEdit对象
WebEdit(“Name:=UserName”, “Index:=0”)
相反,下面的陈述指的是列表中的第二项,因为那是指所有(WebElement)对象中名称为UserName的第一个对象。
WebElement(“Name:=UserName”, “Index:=0”)
使用Location属性识别对象
但得到一个对象的时候,QTP会给测试对象的Location属性分配一个值以唯一的识别这个对象,这个值基于相对于具有相同属性的其他对象在Window,Frame,Dialog
box中出现的顺序给出的,
第一次出现的值为0。这些值是按照从上到下,从左到右的顺序分配的。例如:
Location属性值是指定对象的。因此,如果使用Location:=3描述一个WinButton测试对象,QTP会在页面上按照从上到下,从左到右的顺序搜索第四个WinButton对象。然而,如果使用Location:=3描述一个WinObject对象,QTP会按照从上到下,从左到右的顺序搜索页面上第四个标准对象,与类型无关,因为WinObject适用于所有标准对象。
例如:一个对话框包含下面的对象
· a button object with the name OK
· a button object with the name
Add/Remove
· a check box object with the name
Add/Remove
· a button object with the name Help
· a check box object with the name
Check spelling
下面的陈述指的是列表中的第三项,因为它是页面上第一个名为Add/Remove的Check box对象
WinCheckBox(“Name:=Add/Remove”,
”Location:=0”)
相反,下面的陈述值得是列表中的第二项,因为他是第一个名为Add/Remove的对象
WinObject("Name:=Add/Remove",
"Location:=0")
使用CreationTime属性识别对象
当得到一个浏览器对象的时候,如果QTP不能根据它的对象描述唯一的识别这个对象时,他会给测试对象属性CreationTime分配一个值。这个值表示被打开的浏览器相对于已经打开浏览器顺序的唯一不同的描述。第一个打开的浏览器接收到CreationTime=0.
在运行一个会话期间,如果QTP不能根据测试对象仅有的描述去识别一个浏览器对象,它会检查浏览器被打开的顺序,并且使用CreationTime属性去识别正却的浏览器
例如:你录制了一个模块分别在9:01 pm, 9:03 pm, and 9:05 pm打开的浏览器上,QTP会这样分配CreationTime的值:9:01
pm打开的浏览器为CreationTime:=0, 9. 03 pm打开的浏览器为CreationTime:=1,
9.05 pm打开的浏览器为CreationTime:=2
10:30pm要运行那个模块,假设浏览器被打开分别在10:31 pm, 10:33
pm, and 10:34 pm.QTP会这样识别浏览器:用具有CreationTime:=0的测试对象识别在10:31
pm被打开的浏览器,用具有CreationTime:=1的测试对象识别在10:33
pm被打开的浏览器,用具有CreationTime:=2的测试对象识别在10:34
pm被打开的浏览器
如果打开了几个浏览器,拥有最小CreationTime值的浏览器是第一个被打开的,拥有最大CreationTime值的浏览器是最后一个被打开的。如果有三个或者更多的浏览器被打开,拥有CreationTime:=2的是第三个被打开的浏览器。如果在运行一个session的时候打开了七个浏览器,
拥有CreationTime:=6属性的浏览器是最后打开的
如果在有指定CreationTime值的浏览器中录制一个step,但是在运行session的时候没有具有CreationTime值的浏览器打开,the
step将会在具有最大CreationTime值的浏览器上运行。
下面这个例子:
SystemUtil.Run "iexplore.exe",
"http://www.baidu.com" 'CreationTime 0
SystemUtil.Run "iexplore.exe",
"http://www.google.com.hk/webhp?hl=zh-CN&sourceid=cnhp" 'CreationTime 1
SystemUtil.Run "iexplore.exe",
"http://www.taobao.com"
wait(30)
Browser( "creationtime:=" ).Highlight
wait(30)
Browser( "creationtime:=1" ).Highlight
wait(30)
Browser( "creationtime:=2" ).Highlight
我不知道为什么设置第一个creationtime:=0时,Hight顺序就不正确了