51Testing独家连载:(二十六)精通QTP——自动化测试技术领航

发表于:2012-1-12 11:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余杰 赵旭斌    来源:51Testing软件测试网

分享:

  以上这段代码读者应该也已经很熟悉了。它就是用对象库编程产生的代码。但是,读者有没有思考过一个问题,假设这些对象没有添加到对象库里怎么办?QTP还能工作吗?完全可以!QTP提供了描述性编程(Descriptive Programming)这个解决方案。事实上,在很多情况下,对象都不会顺我们的意思,经常会面临“不是我们想不想把对象添加到对象库,而是根本没法添加”这种尴尬局面。所以,此时“DP”可以担起重任了,替“ORP”完成它无法完成的事!这里暂时先不介绍无法添加对象的案例,我们先存心使对象无法生存于对象库中。把之前添加好的百度的对象全部删除,如图1-182所示。

图1-182

  就像我们现在看到的一样,已经没有对象供我们使用了,怎么办?当前需要做的唯一的一件事是“照搬”!搬什么?虽然对象库里的对象没了,但是我们完全可以将对象库中的内容直接搬迁到脚本中去。又是什么内容是需要搬迁到Expert View中去的呢?—就是我们所要用的对象的一个个属性及其属性值,一起来看下是怎么搬迁的,推序如下所示:

'代码1

Browser("micClass:=Browser").Page("micClass:=Page")._

WebEdit("name:=wd").Set "QTP自动化测试技术领航"

'代码2

Browser("micClass:=Browser").Page("micClass:=Page")._

WebButton("name:=百度一下").Click

  描述性编程大解析(第一种)。

  整个搬迁过程完成了,这就是描述性编程,最简单地说,DP无非就是在描述每个对象的属性和属性值,通过这个原理来虚拟成对象库中的对象,只是对象库是隐形的。

  那先来看看第一句代码(代码1):描述性编程的运作原理完全是和对象库编程一致的,所以在这里先去描述一个最“上层”的对象“Browser”,对象名称写好以后用上一对括号,然后在括号里依次从左到右填入引号、一个属性名称、一个冒号、一个等号、一个属性值、引号。这个就是第一个形式,即:对象名("属性名:?=?属性值")。读者必须要记住这个形式(描述性编程的形式一共有两种,在后文中会继续介绍第二种),有了前面的描述模板,接下来就完全可以依葫芦画瓢了。按照对象的结构顺序一层一层地往下描述,直到定位到最终想要操作的对象,最后给它一个方法,整个过程就结束了。看脚本中的代码1就是这样的。所以,同样的道理在代码2中就不讲了。

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

图1-183

  第一种描述形式已经介绍完了,但是关于第一种描述性编程方式的内容还没有讲完,在前面那段代码中,都是以单属性及其属性值来描述一个对象。其实在QTP中,还可以同时描述多个对象,但是数量还是会有一个极限的,可以描述的属性必须是QTP内置的(怎么才能知道哪些属性是QTP内置的,可供我们描述的,以及一些属性值的设置等,都会在下一小节的内容中介绍到),先让我们一起来看下面这段脚本:

'代码1

Browser("micClass:=Browser").Page("micClass:=Page")._

WebEdit("html tag:= INPUT","name:=wd").Set "QTP自动化测试技术领航"

'代码2

Browser("micClass:=Browser").Page("micClass:=Page")._

WebButton("html tag:= INPUT","name:=百度一下","type:= submit").Click

32/3<123>
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号