QTP中的Description物件詳解
在QTP中,description物件的用途基於這樣一個基礎:QTP是建立在物件識別基礎上的自動化測試工具,當需要操作一個物件時有三種方式:1,使用物件庫中已經記錄的控制元件名;2,使用描述性程式設計;3,使用description物件。
其實對於2和3的理解是類似的,也就是說,當QTP在執行過程中需要給他一個描述,即“我要操作誰”,對於第二種方式,是告訴QTP“你給我找一個控制元件物件,找到它可能需要經過幾層查詢,但是我已經給定了每層查詢的查詢條件”;對於第三種方式,一般是這樣告訴QTP,“我現在有某個控制元件物件,你幫我查詢某些符合條件的孩子”
上面說起來有點拗口,其實就是下面兩種那個方式:
方式1
Browser("title:=Google").Page("title:=Google").Link("text:=Google").click
方式2
Dim oDesc
Dim colObject
Set oDesc = Description.Create
oDesc( "micclass" ).value = "Link"
Set colObject = Browser( "title:=Google").Page("title:=Google").ChildObjects( oDesc )
那麼我們在使用description物件時經常需要注意的點有:
1. 建立一個description物件的方法是:
Set oDesc = Description.Creates
2. 設定查詢條件的方法是:
Set oDesc = Description.Create
oDesc( "micclass" ).value = "Link"
oDesc( "text" ).value = "Images"
3. 看一個物件是否找到以及是否查詢正確你可以有兩種方法:
高亮查詢到的控制元件:colObject(0).Highlight
檢查查詢到的控制元件個數:Msgbox colObject.Count
4. 給定限定條件你也可以使用正則表示式,不過注意設定開關開啟:
Set oDesc = Description.Create
oDesc( "micclass" ).value = "Link"
oDesc( "text" ).value = "I.*age.*"
oDesc( "text" ).regularExpression = True
注意:預設情況下正則表示式的開關是開啟的
如果你這裡正則表示式的開關設定成為了false,那麼你查詢到的是text屬性為“I.*age.*”的link。
5. 注意某些description的成員設定屬性值時,需要使用整型數,而非字串。
Dim oDesc
Dim colObject
Set oDesc = Description.Create
oDesc( "micclass" ).value = "Link"
oDesc( "x" ).value = 51
Set colObject = Browser( "title:=Google").Page("title:=Google").ChildObjects( oDesc )
MsgBox colObject.Count
For x = 0 to colObject.Count - 1
MsgBox colObject(x).GetROProperty("innertext")
Next
6. 限定條件可以引數化
Dim x
X=56
Browser("creationtime:="&x).Page("micclass:=Page").WebEdit("name:=q").Set "Description.Create"
參考資料:
下面這篇文章中主要介紹了description物件的各種使用規則,基本上看完這篇文章你就知道如何使用description物件了。
下面這篇文章主要介紹QTP中的封裝屬性的,例如我們在給定我們限定條件的時候,如何知道到底是應該給“Class Name”還是“MicClass”呢,那麼你 開啟登錄檔“HKEY_CURRENT_USER/Software/Mercury Interactive/QuickTest Professional/MicTest/Attributes/”看看有什麼封裝屬性。