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对象 isVisible = oElementDocument.currentstyle.visibility If isVisible="hidden" Then |
注意:
此处如果使用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> <input type ="button" value="click it" onclick="msg"> |
把以上脚本保存为HTML文件后,打开此文件,并打开QTP对象库,把PAGE对象加入到对象库中,为了能够更直观地看到最终的对比结果,再次特别加入了QTP中保留对象Services的Transaction属性,此方法主要用于计算事务时间的。来看两段不同的脚本。