你可以使用Descrīption对象,来返回一个Properties collection对象,该集合对象包括一系列Property对象。每个Property对象由Property name及value组成。
然后在语句中用Properties collection对象替代被测对象的名称。
注意:默认情况下,所有被添加到Properties collection中的Property对象的值被当成正则表达式对待。因此,当Property Value中包含正则表达式的特殊字符(如*,?,+)时,要在特殊字符前使用“\”符号。
你也可以在Properties Collection中,将RegularExpression属性值设置为False,这样即使在Property Value中用到了正则表达式的特殊字符,也会被视为普通字符。更多信息参考QuickTest Professional Object Model Reference的Utility部分。
要创建Properties collection,使用Dexcription Create语句,语法如下:
SetMyDescrīption= Descrīption.Create()
一旦创建了Properties对象(例如上例中的Mydescrīption),在运行过程中,你就可以使用语句向Properties对象添加、编辑、移除或获取属性及属性值。这使你在运行过程中可以动态的决定:在对象描述中使用哪些属性、使用多少属性。
当你将一系列的属性及属性值加入到Properties collection中以后,你就可以在脚本语句中用Properties对象替代被测对象的名称。
例如,有如下语句:
Window("Error").WinButton("text:=OK", "width:=50").Click
Set MyDescrīption = Descrīption.Create()
MyDescrīption("text").Value = "OK"
MyDescrīption("width").Value = 50
Window("Error").WinButton(MyDescrīption).Click
注:当为一个ActiveX对象创建编程性描述时,如果该对象的run-time对象是windowless的(即没有相应的window handel),就必须在属性描述中将它的windowless property设置为Ture。
例如:
Set ButDesc = Descrīption.Create
ButDesc("ProgId").Value = "Forms.CommandButton.1"
ButDesc("Caption").Value = "OK"
ButDesc("Windowless").Value = True
Window("Form1").AcxButton(ButDesc).Click
通过ChildObjects方法,可以获取指定对象下的所有子对象,或只获取那些符合编程性描述的子对象。为了获取某对象的子对象的子集,首先需创建一个descrīption对象,然后在该对象的descrīptions collection中添加一系列的属性及属性值,这些属性及属性值必须符合子集的要求。
注意:你必须使用Descrīption对象来为ChildObjects描述参数 创建编程性描述,不能使用property:=value语法直接将编程性描述添加到参数中。
一旦你已经在descrīption对象中“built”了描述,就可以使用下面的语法来获取与描述匹配的子对象:
SetMySubSet=TestObject.ChildObjects(MyDescrīption)
Set MyDescrīption = Descrīption.Create()
MyDescrīption("html tag").Value = "INPUT"
MyDescrīption("type").Value = "checkbox"
Set Checkboxes = Browser("Itinerary").Page("Itinerary").ChildObjects(MyDescrīption)
NoOfChildObjs = Checkboxes.Count
For Counter=0 to NoOfChildObjs-1
For more information about theChildObjectsmethod, refer to theQuickTest Professional Object Model Reference.
如果没有录制WebElement对象,也可以使用编程性描述,来对Web网站中的任何一个WebElement对象进行操作。
Browser("Mercury Tours").Page("Mercury Tours").WebElement("Name:=UserName", "Index:=0").Click
set WebObjDesc = Descrīption.Create()
WebObjDesc("Name").Value = "UserName"
WebObjDesc("Index").Value = "0"
Browser("Mercury Tours").Page("Mercury Tours").WebElement(WebObjDesc).Click
QuickTest clicks on the first Web object in the Mercury Tours page with the nameUserName.
关于WebElement对象的更多信息,参考QuickTest Professional Object Model Reference。
在需要唯一识别一个对象时,index属性有时候可能非常有用。index属性是对象在源代码中出现的顺序,第1次出现时,index值为0。
Index属性是object-specific的。因此,当你用index属性值“3”来描述一个WebEdit对象时,QTP会在被测程序的当前页面中查找第4个WebEdit对象。
如果你使用index属性值3来描述一个WebElement对象时,QTP会在被测程序的当前页面中查找第4个Web对象。
下面的语句中指的是列表中的第3个对象,因为它要求指向的是第1个名为UserName的WebEdit对象。
WebEdit("Name:=UserName", "Index:=0")
下面的语句中指的是列表中的第2个对象,因为它要求指向的是第1个名为UserName的WebElement对象。
WebElement("Name:=UserName", "Index:=0")
注:如果当前只有一个对象,使用index=0将无法查找到对象,因此就不能在对象描述中使用index属性。联系客服