3.2.1.2 何时在QTP中使用DOM
在使用QTP测试Web页面时,首先需要加载Web插件,随后QTP就可以顺利地识别一些标准的控件,但有些时候网页中存在一些特殊控件或者存在大量的相同控件时,可以尝试使用DOM的方式来进行控制,因为QTP只对一些标准的控件支持比较好,而有些特殊的控件QTP无法识别,导致无法对其进行操作。DOM是一种最底层的对象操作模型,使用它来控制对象不但速度快,而且可以访问很多QTP本身无法访问的东西。接下来就来一一举例说明。
1.修改控件自身接口
此方法其实已经在第一章里详细讲解过它的应用,原理就是调用了DOM对象接口来修改控件的自身接口属性,这也是QTP本身所无法做到的。在实际测试过程也是一个非常有用的技术,关键时刻可以使问题迎刃而解。
2.DOM对象下CurrentStyle对象应用
CurrentStyle 是一个可以与HTML 对象元素的style sheets进行交互的接口,它可以获取对象元素的字体名、字体大小、颜色、是否可见等。在Web测试中真对一些特殊的界面验证点时能够发挥出很大的作用。在后续的章节中会详细对其进行分析讲解。
3.性能提升
对于性能来说,DOM的执行速度会比QTP的对象库执行速度快上好几倍,这是因为DOM相当于底层的对象接口,而QTP首先需要把对象属性进行封装,然后在脚本运行时调用对象库中的对象,最后与页面上的对象进行比对,如果属性匹配才可控制测试对象。而DOM却是直接找对象进行控制。所以,性能上相对于QTP的对象库有很大的提升,不过此优势一般只有在大量的相同对象或者一些特殊情况的时候才能有明显的区别,这个也会在后续章节详细进行讲解。
注意:使用DOM时也需要注意一点,虽然DOM有很多优势,但是也不要过分依赖DOM,对象库才是QTP的核心,过分使用DOM会导致脚本维护方面相对比较繁琐,毕竟对象库维护起来是最方便的,否则Mercury也不用花费那么大的劲来开发对象库了,而且对于不熟悉DOM的自动化测试工程师来说,会增加他们的负担,所以在使用时也请注意这些细节问题。
3.2.2 IE对象模型结合HTML DOM的Web应用
许多Web应用程序都是基于IE来开发,包括现在很多安全控件,密码控件等大多都只支持IE浏览器,以及使用QTP来对Web测试对象进行操作时也基本上使用的是IE,虽然QTP现在最新的版本开始慢慢支持其他浏览器,但被测系统大多还是基于IE来测试的。因此,熟悉IE自动化模型成了学习Web自动化测试的一项重要任务。接下来看一下具体如何操作。
1.启动IE(3种常见方法)
(1)在QTP中启动IE:
'在QTP中启动IE systemutil.run "iexplore.exe" |
(2)使用WSH启动IE:
'使用WSH启动IE Set oShell = CreateObject("wscript.shell") |
(3)使用IE COM对象:
'使用IE COM启动IE Set oIE = CreateObject("InternetExplorer.Application") oIE.Visible = True '设置可见 oIE.Navigate "http://www.baidu.com" '跳转URL |
小技巧:使用此方法还可以获取窗口的句柄,并通过QTP来定位浏览器,代码如下:
'使用IE COM启动IE Set oIE = CreateObject("InternetExplorer.Application") oIE.Visible = True '设置可见 oIE.Navigate "http://www.baidu.com" '跳转URL '获取窗口句柄 ieHwnd=oIE.HWND '通过句柄定位浏览器并关闭 Browser("hwnd:= " & ieHwnd).Close |