你可以使用Descrīption對象,來(lái)返回一個(gè)Properties collection對象,該集合對象包括一系列Property對象。每個(gè)Property對象由Property name及value組成。
然后在語(yǔ)句中用Properties collection對象替代被測對象的名稱(chēng)。
注意:默認情況下,所有被添加到Properties collection中的Property對象的值被當成正則表達式對待。因此,當Property Value中包含正則表達式的特殊字符(如*,?,+)時(shí),要在特殊字符前使用“\”符號。
你也可以在Properties Collection中,將RegularExpression屬性值設置為False,這樣即使在Property Value中用到了正則表達式的特殊字符,也會(huì )被視為普通字符。更多信息參考QuickTest Professional Object Model Reference的Utility部分。
要創(chuàng )建Properties collection,使用Dexcription Create語(yǔ)句,語(yǔ)法如下:
SetMyDescrīption= Descrīption.Create()
一旦創(chuàng )建了Properties對象(例如上例中的Mydescrīption),在運行過(guò)程中,你就可以使用語(yǔ)句向Properties對象添加、編輯、移除或獲取屬性及屬性值。這使你在運行過(guò)程中可以動(dòng)態(tài)的決定:在對象描述中使用哪些屬性、使用多少屬性。
當你將一系列的屬性及屬性值加入到Properties collection中以后,你就可以在腳本語(yǔ)句中用Properties對象替代被測對象的名稱(chēng)。
例如,有如下語(yǔ)句:
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
注:當為一個(gè)ActiveX對象創(chuàng )建編程性描述時(shí),如果該對象的run-time對象是windowless的(即沒(méi)有相應的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
通過(guò)ChildObjects方法,可以獲取指定對象下的所有子對象,或只獲取那些符合編程性描述的子對象。為了獲取某對象的子對象的子集,首先需創(chuàng )建一個(gè)descrīption對象,然后在該對象的descrīptions collection中添加一系列的屬性及屬性值,這些屬性及屬性值必須符合子集的要求。
注意:你必須使用Descrīption對象來(lái)為ChildObjects描述參數 創(chuàng )建編程性描述,不能使用property:=value語(yǔ)法直接將編程性描述添加到參數中。
一旦你已經(jīng)在descrīption對象中“built”了描述,就可以使用下面的語(yǔ)法來(lái)獲取與描述匹配的子對象:
SetMySubSet=TestObject.ChildObjects(MyDescrīption)
例如:下面的語(yǔ)句使QTP選中網(wǎng)頁(yè)中的所有選擇框:
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.
如果沒(méi)有錄制WebElement對象,也可以使用編程性描述,來(lái)對Web網(wǎng)站中的任何一個(gè)WebElement對象進(jìn)行操作。
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.
關(guān)于WebElement對象的更多信息,參考QuickTest Professional Object Model Reference。
在需要唯一識別一個(gè)對象時(shí),index屬性有時(shí)候可能非常有用。index屬性是對象在源代碼中出現的順序,第1次出現時(shí),index值為0。
Index屬性是object-specific的。因此,當你用index屬性值“3”來(lái)描述一個(gè)WebEdit對象時(shí),QTP會(huì )在被測程序的當前頁(yè)面中查找第4個(gè)WebEdit對象。
如果你使用index屬性值3來(lái)描述一個(gè)WebElement對象時(shí),QTP會(huì )在被測程序的當前頁(yè)面中查找第4個(gè)Web對象。
下面的語(yǔ)句中指的是列表中的第3個(gè)對象,因為它要求指向的是第1個(gè)名為UserName的WebEdit對象。
WebEdit("Name:=UserName", "Index:=0")
下面的語(yǔ)句中指的是列表中的第2個(gè)對象,因為它要求指向的是第1個(gè)名為UserName的WebElement對象。
WebElement("Name:=UserName", "Index:=0")
注:如果當前只有一個(gè)對象,使用index=0將無(wú)法查找到對象,因此就不能在對象描述中使用index屬性。聯(lián)系客服