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

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

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

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

分享:

  执行脚本以后的结果就是在Log窗口内写8行True,返回True就说明描述的对象存在了,也就说明描述性编程成功了,如图1-191所示。

图1-191

  分析。

  这段脚本首先用Set将公共部分进行了提炼,这样可以使重复的部分合为一个整体。然后完全还可以进行优化,所以,选择使用With将所有会被复用的代码提炼出来(这里指Baidu),这样整个脚本就显得非常清晰了。

  这也是描述性编程常用情况之一的最基本的一个情况:同一个界面中出现很多个相同类别的控件元素。

  (2)如果要同时操作浏览器的多个窗口时,怎么做?你想过吗?

  通常情况下,都只需要在一个窗口中完成任务。如果同时出现两个窗口的话,QTP就会出错,因为QTP匹配到了大于1个的窗口对象,所以它不知道究竟该对哪个具体对象进行操作了。所以,此时就要用以下这个方法,脚本如下所示:

SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE" 

SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE" 

Browser("CreationTime:=0").Navigate "http://www.51testing.com"

Browser("CreationTime:=1").Navigate http://www.baidu.com

  使用以上代码,QTP就能够分辨出多个浏览器窗口了,当然,也可以使用Index或Location属性,大家可以尝试一下。同时,也可以尝试一下如何将指定的窗口关闭。

  另外,当使用Browser ("CreationTime:=-1")的时候,表明当前有且仅有一个浏览器窗口,当只需要一个浏览器的时候,可以使用这个方法来作为判断依据,脚本如下所示:

objBrowser = Browser ("CreationTime:=-1").Exist (0) 

If objBrowser Then 

    Msgbox "存在一个浏览器窗口

else 

    Msgbox "存在0个或多个浏览器窗口

End If

  (3)使用描述性编程通过遍历对象完成N个同类控件的操作。

  假设有这么一个场景,页面中有几百个输入框,此时如果逐一将这几百个对象添加到对象库是不科学的,使用描述性编程则是一个明智选择。但是,也不能逐一描述,因为效率同样的低。在这种情况下,就可以用描述性编程来遍历页面中的对象,从而最终完成艰巨的任务。百度的高级搜索页面就是一个比较典型的例子,页面中有很多输入框,如图1-192所示。

图1-192

  现在要对这些输入框做文章,在每个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

43/4<1234>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • feil飞
    2015-9-09 16:16:50

    不知道为什么,有好几行都是false。如Print Baidu.Link("name:=新闻").Exist就是false,顶部是有这个新闻链接的

  • liqiuheng
    2013-6-03 16:57:02

    图1-192下的代码直接运行,会有general run error,需要在all_oEdit("micClass").value = "WebEdit" 后加一句:
    all_oEdit("html tag").value="input"
    就不会有问题了,有人知道这是为什么吗?虽然可以运行了,但想知道原理。。。求高人指点

  • 51test_pp
    2012-2-17 21:49:27

    从开始到现在已经看了二十七节,发现作者每节都写的非常精彩。我想问一下,如果对一个以Java Applet为主的网站应该怎样进行测试,到目前为止,我还不是很清楚。希望作者后续会讲到。谢谢作者

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号