QTP - 描述性程式設計



只有當物件存在於物件庫中時,QTP 指令碼才能執行。物件的描述是使用描述性程式設計建立的 -

  • 當測試人員想要對物件庫中不存在的物件執行操作時

  • 當應用程式中的物件本質上非常動態時。

  • 當物件庫變得很大時,會導致效能下降,因為物件庫的大小會增加。

  • 當構建框架時,已決定根本不使用物件庫。

  • 當測試人員想要在執行時對應用程式執行操作,而無需瞭解物件的唯一屬性時。

語法

使用描述性程式設計技術編寫指令碼有兩種方法。他們是 -

  • 描述物件
  • 描述字串

描述物件

指令碼是使用依賴於所用屬性及其對應值的描述物件開發的。然後,這些描述用於構建指令碼。

'Creating a description object
Set btncalc = Description.Create()

'Add descriptions and properties
btncalc("type").value = "Button"
btncalc("name").value = "calculate"
btncalc("html tag").value = "INPUT"

' Use the same to script it
Browser("Math Calc").Page("Num Calculator").WebButton(btncalc).Click

描述字串

物件的描述是使用屬性和值作為字串開發的,如下所示。

Browser("Math Calc").Page("Num Calculator").WebButton("html 
tag:=INPUT","type:=Button","name:=calculate").Click

子物件

QTP 提供了 ChildObjects 方法,使我們能夠建立物件集合。父物件在 ChildObjects 之前。

Dim oDesc
Set oDesc = Description.Create
oDesc("micclass").value = "Link"

'Find all the Links
Set obj = Browser("Math Calc").Page("Math Calc").ChildObjects(oDesc)

Dim i
'obj.Count value has the number of links in the page

For i = 0 to obj.Count - 1	 
   'get the name of all the links in the page			
   x = obj(i).GetROProperty("innerhtml") 
   print x 
Next

序數識別符號

描述性程式設計用於編寫基於序數識別符號的指令碼,這將使 QTP 能夠在兩個或多個物件具有相同屬性時對這些物件進行操作。

' Using Location
Dim Obj
Set Obj = Browser("title:=.*google.*").Page("micclass:=Page")
Obj.WebEdit("name:=Test","location:=0").Set "ABC"
Obj.WebEdit("name:=Test","location:=1").Set "123"
 
' Index
Obj.WebEdit("name:=Test","index:=0").Set "1123"
Obj.WebEdit("name:=Test","index:=1").Set "2222"
 
' Creation Time
Browser("creationtime:=0").Sync
Browser("creationtime:=1").Sync
Browser("creationtime:=2").Sync
廣告