QTP描述性编程

来源:互联网 发布:潍坊行知学校在哪个区 编辑:程序博客网 时间:2024/04/29 10:18

描述性编程的两种写法

  • 第一种

首先对比一下相同的操作在对象库编程中和在描述性编程中的不同

对象库编程:
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "QTP 自动化测试"

描述性编程:
Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=wd").Set "QTP 自动化测试"

描述性编程的运作原理完全是和对象库编程一致的,先是去描述一个最“上层”的对象"Browser“,对象名字写好以后用上一对括号,然后在括号里一次从左到右键入引号、一个属性名称、一个冒号、一个等号、引号。
这个就是第一种形式,即:对象名("属性名:=属性值")
一层一层往下描述,直到定位到最终想要操作的对象,最后给它一个方法。

1.描述性编程就是将原对象库编程中括号内的“对象名”换成一种描述性语言,它描述的仍是这个对象,只不过不再是封装好的现成的对象,而是需要现场描述(封装)。

2.描述性编程中,可以同时描述多个属性,多个属性用英文状态下的逗号隔开,可以描述的属性必须是QTP内置的

3.描述性编程中,如果父对象描述了,子对象则一定要描述

  • 第二种

第二种描述性编程,使用Description对象

使用该对象可以返回包含一组Property对象的Properties集合对象。
Property对象由属性名和值组成。
可以在语句中指定用返回的Properties集合来代替对象名

要创建Properties集合,需要先创建Properties对象,使用以下语法进行:

Set objDescription=Description.Create()

创建完毕后,就可以在运行会话期间在Properties对象中添加、编辑、删除或检索属性和属性值了。即,将对象的属性极其属性值的描述封装在一个特殊的Description对象中。

Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=wd").Set "QTP 自动化测试"

以上语句可以通过Description对象来实现同样的功能,参见下面这段代码:

Set ObjBrowser=Description.Create()
ObjBrowser("micClass").Value="Browser"

Set ObjPage=Description.Create()
ObjPage("micClass").Value="Page"

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

Browser(ObjBrowser).Page(ObjPage).WebEdit(ObjWebEdit).Set "QTP 自动化测试"

Set ObjWebEdit=Nothing
Set ObjPage=Nothing
Set ObjBrowser=Nothing

总结,
第一种方法更适合应用于普通脚本中,当在对象库编程中无法完成任务的时候,描述性编程临时加上一句,这样做显得更加直观,代码数量也更加少。但是很明显的缺陷就是无法做到复用;
第二种描述性编程的方式更适合应用于基于框架的脚本中,从表象上看虽然比前者会多写几句代码,但是这种方式的复用性远远优于前者;
具体选取哪一种方式都应按照项目的实际情况界定。

描述性编程例子:

假定有这样一个场景,页面中有几百个输入框,此时如果逐一将这几百个对象添加到对象库是非常繁琐的,不科学的,使用描述性编程则是一个明智的选择。但是也不能逐一描述,因为效率同样的低。
在这种情况下,就可以用描述性编程来遍历页面中的对象,从而最终完成艰巨的任务。
百度的高级搜索页面就是一个比较典型的例子,页面中有很多输入框,http://www.baidu.com/gaoji/advanced.html
现在要对这些输入框做操作,在每个WebEdit中输入“QTP 自动化测试”这段字符串,实现脚本如下:

'打开网站页面
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE","http://www.baidu.com/gaoji/advanced.html"

'描述对象 -- WebEdit
Set all_oEdit=Description.Create()
all_oEdit("micClass").Value="WebEdit"

'为WebEdit找父对象和祖父对象,并将所有对象(包括其父对象和其祖父对象)“包装”在一起
Set all_oEdits=Browser("micClass:=Browser").Page("micClass:=Page").ChildObjects(all_oEdit)

'遍历页面中的WebEdit对象,找到一个就输入一串指定的字符串
For i=0 to all_oEdits.count-1
 Set oEdit=all_oEdits.item(i)
 oEdit.Set "QTP 自动化测试"
Next

'最后释放所有设置的对象
Set oEdit=Nothing
Set all_oEdits=Nothing
Set all_oEdit=Nothing

原创粉丝点击