描述编程中的Description对象

 
QTP Professional帮助文件中的Index页输入关键字"descrīptive programming",就可以找到主题为"Using Programmatic Descrīptions"的文章。这篇文章介绍了描述编程,并且提及描述编程的两种表现形式。
There are two types of programmatic descrīptions. You can either list the set of properties and values that describe the object directly in a test statement, or you can add a collection of properties and values to a Descrīption object, and then enter the Descrīption object name in the statement.

其中的第一种形式是在 测试语句中直接列出描述对象的属性和属性值的集合,易于理解和使用。例如,描述某个页面上的CheckBox可以写成如下形式,其中Prop和Value集合是识别该对象的属性和值集合:
Browser(**).Page(**).WebCheckBox("Prop01:=Value01","Prop02:=Value02",...).Set "ON"

第二种形式则是把描述对象的属性和属性值的集合加入到Descrīption对象中,然后在测试语句中使用这个Descrīption对象。还是上面的例子,使用了Descrīption对象后语句变成了:
Dim objDesc
Set ōbjDesc = Descrīption.Create()
objDesc("Prop01").Value = "Value01"
objDesc("Prop02").Value = "Value02"
...
Browser(**).Page(**).WebCheckBox(objDesc).Set "ON"

其实这两种形式没有什么区别,但是各有特点。前者形式简洁但是可读性差些,后者形式复杂但是可读性好些。当识别对象的属性和值集合内容不多的时候,还是用前者比较方便。

那什么时候用Descrīption对象比较好呢,就像某个帖子讨论过的,Descrīption对象和ChildObjects方法结合使用比较体现优点。下面的例子取自我们在项目中开发的测试脚本,目的是在一个Table中遍历样式为"actions.gif"且类型为"Image"的所有对象。
Dim objDesc, objImgs
Set ōbjDesc = Descrīption.Create()
objDesc("micclass").Value = "Image"
objDesc("file name").Value = "actions.gif"
Set ōbjImgs = Browser("Browser").Page("Enterprise").WebTable("Detail View").ChildObjects(objDesc)
Dim intCount, i, strHref, strHref
intCount = objImgs.Count - 1
For i = 0 To intCount
    strHref = objImgs(i).GetROProperty("href")
Next

其中的关键是Descrīption对象的创建
Set ōbjDesc = Descrīption.Create()

对象的属性-值集合,其实就是人为设定的QTP用来识别某类对象的属性和值特征。这个例子里面就是
objDesc("micclass").Value = "Image" '对象类型为Image
objDesc("file name").Value = "actions.gif" '对象使用的文件名为actions.gif
这些属性-值都可以用SPY工具得到

最后加上ChildObjects方法
Set ōbjImgs = Browser("Browser").Page("Enterprise").WebTable("Detail View").ChildObjects(objDesc)
将所有符合Descrīption对象描述的特征的那些对象从WebTable("Detail View")里面取出来。objImgs即包含在WebTable中的所有符合Descrīption描述的所有对象集合。

你可能感兴趣的:(描述编程中的Description对象)