QTP描述性编程脚本:
Services.StartTransaction "inputBefore" For i=1 to 100 Browser("Browser").Page("Page").WebEdit("name:=text_"+cstr(i)).Set "zzxxbb112" Next Services.EndTransaction "inputBefore" |
DOM操作脚本:
Services.StartTransaction "inputBefore" For i=1 to 100 Browser("Browser").Page("Page").Object._ getElementsByName("text_" + cstr(i))(0).value = " zzxxbb" Next Services.EndTransaction "inputBefore" |
第一个脚本是使用了QTP的描述性编程,并对text后的动态数字进行了参数化,这样QTP就能顺利地对每个文本对象进行set方法的操作。第二个脚本使用了page对象的object属性,也就是获得了DOM对象的引用,接着使用GetElementsByName方法,动态循环获取文本框并进行输入。其实相信读者在运行以上两段代码时就应该深有体会,为了让读者更清晰地看到两种操作对象方法的性能差距,这里特地使用了事务,并在结果报告中进行了时间输出。
QTP描述性编程的结果,如图3-15所示。
图3-15
DOM操作脚本的结果,如图3-16所示。
图3-16
分析:
由如上两张图可以看出,第一张图使用QTP描述性编程测试结果总消耗时间为20.4秒,而第二张图使用DOM操作脚本的结果图总消耗时间为5.7秒,经过对比分析后,可以得到的结论是,当需要输入100个文本框时,DOM对象的性能要比QTP描述性编程方式快2~4倍,这个差距其实是非常惊人的,此处读者也可以想象一下,现在是100个文本框,若是有500个或者1000个,它们之间的差距又会相差多少。如果有兴趣的读者可以尝试一下后两种情况甚至更多,最终的性能提升差距可能会更大。
3.2.4 总结
本章节主要让读者了解了DOM在自动化测试过程中的优势,以及如何在QTP中使用、何时使用等。在实际项目应用过程中,只要是Web应用基本上都会有它的身影,而且它与测试对象的关系非常的紧密,可以脱离QTP操控Web对象元素的自身接口属性或者方法。因此,DOM也算是必会的一个知识点。很多时候它也能够解决QTP无法解决的问题。本章所提到的几个优势只是实际应用中的一部分,还有许多优势只有自己在接触真实项目之后才可将其挖掘出来。例如,当遇到日期控件,文本框是disable状态的,类似这样的情况可以使用DOM接口访问控件的value属性直接注入需要的值。只要把DOM的作用充分发挥出来并与QTP完美结合,相信大多数测试对象问题一定都能迎刃而解。
知识点巩固和举一反三练习
一、利用DOM使支付宝的密码框变为只读。
步骤:
1.打开www.alipay.com,找到密码框。
2.利用DOM技术使其密码框状态变为Disable。
本文选自《51Testing软件测试作品系列》之九——《精通QTP——自动化测试技术领航》。
本站经人民邮电出版社和作者的授权,近期将进行部分章节的独家连载,敬请期待!
版权声明:51Testing软件测试网获人民邮电出版社和作者授权独家连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关阅读: