描述性编程的两种写法

对象库编程(ORP)是一个非常强大的功能,如果对象名字改变了,只需要进入对象库修改对象,脚本即可批量更新。

描述性编程(DP)不需要维护庞大的对象库,而需要维护庞大的代码,但是在某些情况下(比如对象不能添加到对象库)它很有用。

下面通过一个例子来学习如何进行描述性编程:

       首先,我们录制一段在百度首页输入“abcde”,然后点击“百度一下”的代码:

Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "abcde"
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebButton("百度一下").Click

       这时候打开对象库如下图:

               

某些情况下会出现无法添加对象到对象库的情况,这时候就需要用到描述性编程了。所以我们在这里先把对象库里的4个对象都删除。好了,现在已经没有对象供我们使用了。开始进行描述性编程了。它有2种方式:

  一.使用 对象名(“属性名1:=属性值1”,“属性名2:=属性值2”)    注意:这里的的括号,逗号,冒号都必须是英文状态下的。

  上面的代码转换如下:

Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("name:=wd","html tag:=INPUT","html id:=kw1").Set "ad"
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebButton("name:=百度一下","html id:=su1").Click

  注意:如果父对象描述了,子对象一定要描述,不然QTP会报错。但是子对象如果描述了,父对象若被添加到对象库中,可以不描述。

  二.使用Description对象

  使用Description对象可以返回包含一组Property对象的Properties集合对象。Property对象由属性名和值组成。然后,可以在语句中指定用返回的Properties集合代替对象名(每个Property对象都包含一个属性名和值)。

  创建Properties对象的语法如下:

Set ObjDescription = Description.Create()

  创建完毕后,就可以在运行会话期间在Properties对象中添加,编辑,删除或检索属性和属性值了。

  最开头的代码转换如下:

Set ObjBrowser = Description.Create()
ObjBrowser("name").Value = "百度一下,你就知道"

Set ObjPage = Description.Create()
ObjPage("title").Value = "百度一下,你就知道"

Set ObjWebEdit = Description.Create()
ObjWebEdit("name").Value = "wd"
ObjWebEdit("html tag").Value = "INPUT"
ObjWebEdit("html id").Value = "kw1"

Browser(ObjBrowser).Page(ObjPage).WebEdit(ObjWebEdit).Set "abcde"

Set ObjWebEdit = Nothing
Set ObjPage = Nothing
Set ObjjBrowser = Nothing

  注意:1.这里描述对象的括号内不需要加引号; 2.最后要释放对象,可以从最里面一层开始释放到最外面一层。

最后这里要说明几点

1. 我看教程里描述Browser和Page是用:Browser(“micClass:=Browser”).Page("micClass:=Page"),

但是我在QTP里这样写的时候会出现Cannot find the "[ WebEdit ]" object's parent "[ Browser ]" (class Browser). 我也不知道问题出在哪里。望指教。

2. 这里描述用到的属性都是封装接口的属性,不是自身接口属性。也就是Object Spy里Identification Properties的Properties属性:

    

3. 如果使用某个属性还是出现“The "[ WebEdit ]" object's description matches more than one of the objects currently displayed in your application”这类错误,可以尝试加入更多属性去判断,比如id,name等等。

原文地址:https://www.cnblogs.com/bangbangjiang/p/3791342.html