QTP - 描述性编程

仅当对象存在于对象存储库中时,QTP 脚本才能执行。对象的描述是使用描述性编程创建的 −

  • 当测试人员想要对对象存储库中不存在的对象执行操作时

  • 当应用程序中的对象本质上非常动态时。

  • 当对象存储库变大时,随着对象存储库大小的增加,会导致性能不佳。

  • 当框架构建时,决定根本不使用对象存储库。

  • 当测试人员想要在运行时对应用程序执行操作而不知道对象的独特属性时。

语法

使用描述性编程技术编写脚本有两种方法。它们是 −

  • 描述对象
  • 描述字符串

描述对象

脚本是使用描述对象开发的,这些对象取决于所使用的属性及其对应的值。然后,这些描述用于构建脚本。

'创建描述对象
设置 btncalc = Description.Create()

'添加描述和属性
btncalc("type").value = "Button"
btncalc("name").value = "calculate"
btncalc("html tag").value = "INPUT"

'使用相同的脚本编写它
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"

'查找所有链接
Set obj = Browser("Math Calc").Page("Math Calc").ChildObjects(oDesc)

Dim i
'obj.Count 值包含页面中的链接数

For i = 0 to obj.Count - 1	 
   '获取页面中所有链接的名称		
   x = obj(i).GetROProperty("innerhtml") 
   print x 
Next

序数标识符

使用描述性编程根据序数标识符编写脚本,当两个或多个对象具有相同属性时,这将使 QTP 能够对这些对象采取行动。

' 使用 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