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

发表于:2012-2-07 11:09

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

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

  3.遍历所有IE浏览器窗口

  可以使用Windows的SHELL.Application遍历所有打开的IE浏览器窗口,并在所有打开的窗口中判断其窗口是否为IE浏览器窗口后存入字典对象集合中。在这里写一个遍历所有IE浏览器窗口并且返回一个字典对象集合的Function函数。

'遍历所有IE对象

Function EnumerateIE()

 On Error Resume Next

 '创建一个字典对象并返回所有当前打开的IE集合

 Set EnumerateIE = CreateObject("Scripting.Dictionary")

 '获取所有Windows窗口

 Set oWinShell = CreateObject("Shell.Application")

 Set allWindows = oWinShell.Windows

 '遍历每个Windows窗口

 For Each oWindow In allWindows

  '检查如果是IE就添加字典对象中

  If InStr(1, oWindow.FullName, "iexplore.exe",vbTextCompareThen

   EnumerateIE.Add oWindow.hwnd, oWindow

  End if

 Next

End Function

  接着就可以对此函数进行应用了,例如,关闭所有IE窗口:

'获取所有IE窗口对象的列表

Set allIE = EnumerateIE()

'关闭所有打开的IE窗口

For Each oIE In allIE.Items

  oIE.quit  

Next

  结果:通过调用刚才写的函数,成功关闭所有打开的IE窗口。同样的效果,如果在QTP中只需要一行代码就可以完成,代码如下:

SystemUtil.CloseProcessByName ("iexplore.exe")

  4.利用DOM操作测试对象

  现在已经会使用IE COM组件来对IE浏览器进行自动化的操作,但是对于浏览器页面中的测试对象IE COM是无法对其进行操作的,这个时候就需要使用HTML DOM来对其进行操作。HTML DOM是HTML Document Object Model(文档对象模型)的缩写,它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑。 接下来看几个简单的例子。

  3种方法对比:getElementByID、getElementsByName、getElementsByTagName。

  (1)通过getElementByID方法获取定位对象,并对其进行操作:

'使用IE COM启动IE

Set oIE = CreateObject("InternetExplorer.Application")

oIE.Visible = True  '设置可见

oIE.Navigate "http://www.baidu.com"  '跳转URL

'等待IE页面加载完毕

While oIE.Busy: Wend

'获取Document对象

Set oDoc = oIE.Document 

'使用DOM对测试对象进行操作

With oDoc

'搜索框输入

.getElementByID("kw").value = "zzxxbb112"

'点击百度搜索

.getElementByID("sb").Click

End With

Set oDoc = Nothing 

Set oIE = Nothing

  结果:运行后首先是打开浏览器跳转百度首页,等待加载完成之后,创建DOM对象,并使用getElementByID获取百度搜索框对象,并对其进行输入“zzxxbb112”后,再次通过getElementByID方法获取百度搜索按钮并进行点击,最终成功跳转搜索结果。

  (2)通过getElementsByName方法获取定位对象,并对其进行操作:

'使用IE COM启动IE

Set oIE = CreateObject("InternetExplorer.Application")

oIE.Visible = True  '设置可见

oIE.Navigate "http://www.baidu.com"  '跳转URL

'等待IE页面加载完毕

While oIE.Busy: Wend

'获取Document对象

Set oDoc = oIE.Document 

'获取元素名为WD的集合

Set oEdits = oDoc.getElementsByName("wd")

'遍历对象并对其进行操作

For Each oEdit In oEdits

        oEdit.value = "zzxxbb112"

Next 

'点击百度搜索

oDoc.getElementByID("sb").Click

Set oDoc = Nothing 

Set oIE = Nothing

  结果:使用getElementsByName和getElementByID不同,getElementByID是返回的单个对象,而getElementsByName返回的是一个元素的集合,需要通过遍历对象才能对其进行操作。

54/5<12345>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • hongstarw
    2013-2-16 17:41:38

    .getElementByID("sb").Click
    sb应为su

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号