首页 > 代码库 > 描述性编程的两种写法
描述性编程的两种写法
对象库编程(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 = http://www.mamicode.com/"百度一下,你就知道"Set ObjPage = Description.Create()ObjPage("title").Value = http://www.mamicode.com/"百度一下,你就知道"Set ObjWebEdit = Description.Create()ObjWebEdit("name").Value = http://www.mamicode.com/"wd"ObjWebEdit("html tag").Value = http://www.mamicode.com/"INPUT"ObjWebEdit("html id").Value = http://www.mamicode.com/"kw1"Browser(ObjBrowser).Page(ObjPage).WebEdit(ObjWebEdit).Set "abcde"Set ObjWebEdit = NothingSet ObjPage = NothingSet 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等等。