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

发表于:2012-2-09 13:56

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

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

3.2.3.3  利用DOM完成QTP无法完成的任务

  使用CurrentStyle验证对象

  HTML源代码样例:

<style>
         .class_visible { visibility:"visible"}
         .class_hidden  { visibility:"hidden"}
</style>
<div class=class_hidden id="ID_001">
         <p> DHTML using DISPLAY </p>
</div>

  QTP中代码样例:

'获取DOM对象
set oElementDocument = Browser("Browser").Page("Page")._
WebElement("html id:=id_001").Object

isVisible = oElementDocument.currentstyle.visibility

If isVisible="hidden" Then
msgbox "object is hidden"
else
msgbox "object is visible"
End If

  注意:

  此处如果使用QTP的exist方法,结果永远是返回True。因为此对象的确是存在于网页中,但是它被设置为了不可见,而exist方法只是验证对象是否存在,却不能验证是否隐藏。这样就无法达成我们需要验证的目的,而document对象下的currentstyle可以直接访问style sheets,而且QTP从10.0版本开始已经支持currentstyle下的所有属性,提高了编码的效率,如图3-14所示。

图3-14

  除了验证对象是否为可见或者隐藏外,currentStyle还可以验证许多QTP本身无法验证的属性,如字体名、字体大小、字体颜色等。在实际项目测试工作中,此对象也是经常被使用到,也请读者能够牢记,更多验证属性可参见msdn.microsoft.com中的currentStyle对象。

3.2.3.4  利用DOM提升性能

  当对象数量较多时,使用DOM较为占优势,数量越多就越明显,这里简单做个对比假设一个页面一共有100个文本框,我们的需求是对这100个文本框分别输入helloworld这个字符串。为了能更好地让读者体现DOM在性能方面的优势,此处就自己构建一个含有100个文本框的HTML页面,每个文本框的name属性都是由text_开头,之后由1到100递增,脚本如下所示:

<html>
         <head>
         <script language="vbscript">
                    function msg
                              for i=1 to 100
                                        tt = tt + "<input type ='text' name='text_"+cstr(i)+"'>"
                              next
                              Document.getElementbyid("zzxxbb").innerHTML = tt
                    end function
         </script>
         </head>
         <body>

                    <input type ="button" value="click it" onclick="msg">
                    <div id='zzxxbb'></div>
         </body>
</html>

  把以上脚本保存为HTML文件后,打开此文件,并打开QTP对象库,把PAGE对象加入到对象库中,为了能够更直观地看到最终的对比结果,再次特别加入了QTP中保留对象Services的Transaction属性,此方法主要用于计算事务时间的。来看两段不同的脚本。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号