分享

Object Identification:选择 Ordinal Identifier

 恋家的孩子 2012-02-07
QTP除了可以获取到被测对象的主属性、辅助属性值外,还可以获取到被测对象的Ordinal Identifier值。当QTP发现有多个对象具有相同的主属性值、辅助属性值而无法对它们进行唯一识别时, Ordinal Identifier会获取每个对象的序列值,以将它们区别开来。
由于序列值是一个相对值,任何页面的变更都有可能导致这些值发生改变,因此,只在主属性与辅助属性无法唯一识别对象的情况下,QTP才会获取该序列值。
在运行测试脚本时,如果使用对象的属性值以及Smart Identification机制都无法唯一识别应用程序中的对象,才会使用到序列值。如果QTP可以通过其它属性值对对象进行识别,则会忽略序列值。
QTP可以使用以下类型的ordinal identifiers来识别对象:
Index      表示对象在程序代码中的出现顺序,这个顺序是相对于其它具有相同属性的对象而言的。
Location   表示对象在窗口、Frame或对话框中出现的顺序,这个顺序是相对于其它具有相同属性的对象而言的。
CreationTime(仅适用于Browser对象) 表示Browser对象打开的顺序,这相顺序是相对于其它已打开的具有相同属性的对象而言的。
一般情况下,Ordinal Idenfifier类型适用于所有类。在Object Identification窗口,通过Ordial identifier下拉框,可以选择其它类型。
注:QTP在录制脚本时,如果通过主属性与辅助属性已能够唯一识别对象,则不会获取对象的ordinal identifier顺序值。你可以在脚本录制完成后,在Object Properties或Object Repository对话框中使用Add/Remove操作,手动添加顺序值。
1. 使用Index属性识别对象
QTP在录制过程中,可以获取到对象的Index属性值来唯一识别对象。QTP根据对象在程序代码中的出现顺序来决定该属性值。第1个出现的对象的值是0。
Index属性值object-specific的。因此,假如一个WebEdit测试对象的Index属性值为3时,QTP会查找程序页面中的第4个WebEdit对象;但是,如果一个WebElement对象的Index属性值为3,则QTP查看程序页面中的第4个Web对象,而不管对象是属于Web对象的哪种类型,因为WebElement对象可以是任何Web对象。
例如,假设一个页面包括以下对象:
一个Image对象,名为Apple;
一个Image对象,名为UserName;
一个Webedit对象,名为UserName;
一个Image对象,名为Password;
一个Webedit对象,名为Password。
下面的语句指的应该是上表第3行所描述的对象,因为它是第1个名为UserName的WebEdit对象。
WebEdit("Name:=UserName", "Index:=0")
下面的语句指的应该是上表第2行所描述的对象,因为它是第1个名为UserName的Web对象。
WebElement("Name:=UserName", "Index:=0")
2.   使用Location属性识别对象
QTP在录制脚本时,可以获取被测对象的Location属性值来唯一识别对象。这个属性值就是多个相同对象在窗口、框架、对话框中的出现顺序。第1个出现的对象,属性值为0。顺序值的分配是先列后行,先左后右。
在下面的例子中,对话框中的单选按钮按它们的位置排序。
Location属性值是object-specific的。因此,当一个WinButton对象的Location属性值为3时,QTP从顶端向底端搜索,然后从左向右搜索,直到找到页面中的第4个WinButton对象。但是,如果被搜对象是WinObject,则QTP从顶端向底端搜索,然后从左向右搜索,直到找到第4个Standard对象,因为WinObject对象可以是任何Standard对象。
例如,假设一个对话框中包括以下对象:
一个Button对象,名为OK;
一个Button对象,名为Add/Remove;
一个Check Box对象,名为Add/Remove;
一个Button对象,名为Help;
一个Check box对象,名为Check spelling。
下面的指句指应该是第3行中所描述的对象,因为它是第1个名为Add/Remove的Check Box对象。
WinCheckBox("Name:=Add/Remove", "Location:=0")
下面的指句指应该是第2行中所描述的对象,因为它是第1个名为Add/Remove的WinObject对象。
WinObject("Name:=Add/Remove", "Location:=0")

 Smart Identification: 
智能识别机制主要工作于测试脚本运行时(对象允许智能识别为真),当对象库中对象的强制属性(或辅助属性)与被测应用程序中对应对象的属性不一致时,智能识别机制将会启动。其主要原理为:先选择某个基本属性进行比较,若对象多于一个,再继续添加属性筛选;若添加的对象属性造成无对象匹配,则淘汰该属性,应用该方法直至找到唯一对象并对该对象执行操作。(若所有属性的添加或淘汰都无法识别唯一对象,QTP将应用ordinal identifier去识别对象。) 
选中Enable Smart Identification选项,然后点击它右边的Configure按钮打开Smart Identification Properties对话框,框中列出基本Filter属性以及可选Filter属性。
选中某类的Enable Smart Identification选项,QTP在录制过程中就会获取该类对象的所有在Smart Identification Properties对话框中指定的属性值。
在默认情况下,有的类的Enable Smart Identification选项默认被选中,并设置好了Smart Identification。
只有选中了类的Enable Smart Identification选项,才通在测试过程中使用Smart Identification机制;假设你已经在Smart Identification Properties对话框中设置好了Smart Identification,你可能又不希望在测试过程中使用Smart Identification机制,在这种情况下,将该类的Enable Smart Identification选项清除即可。
注意:在Object Properties或Object Repository对话框,对于某些对象,可以禁止它们的SmartIdentification机制,即使你已在Object Identification窗口中选中了Enable Smart Identification选项。
但是,如果在Object Identification窗口中没有选中Enable Smart Identification选项,则测试过程中无法启用Smart Identification机制。
在测试中,你还可以在整个测试中禁止使用Smart Identification机制,操作在Test Setting对话框的Run页签中完成。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多