【注:在QTP层面操作对象时,对象必须是可见的,在DOM层面的时没有要求但有时在DOM层面对元素执行操作时无效又需要在QTP层面才能操作】
定义IE对象、Document对象
Set oIE=CreateObject("InternetExplorer.Application")
oIE.Visible="True"
oIE.navigate="http://www.baidu.com"
while oIE.Busy :Wend '等待IE加载完成
Set oDoc=oIE.Document
通过vbs获取网页源码:
Set XmlHttp1=CreateObject("MSxml2.XMLHTTP")XmlHttp1.Open "GET","http://www.baidu.com",false
XmlHttp1.Send
source=XmlHttp1.ResponseText
msgbox source
通过QTP的document对象获取网页源码:
For each tlink in Browser("微博桌面").Object.document.getElementsByTagName("html")
print tlink.outerhtml
Next
通过QTP的page对象获取网页源码:
For each tlink in Window("微博桌面").Page("评论").Object.getElementsByTagName("html")
print tlink.outerhtml
Next
获取并操作DOM对象:
Set DomObj = Browser("微博桌面").Object.document
DomObj.Method(args...)
eg: DomObj.GetElementById(ID), DomObj.GetElementByName(Name), DomObj.GetElementByTagName(TagName)
DomObj.Property
eg: DomObj.body, DomObj.cookie, DomObj.url
DomObj.Set '''返回对象集合
eg: DomObj.all, DomObj.links, DomObj.forms
更多DOM支持的操作可以参考 http://www.w3school.com.cn/example/hdom_examples.asp
QTP 帮助文档官方指定的地址:http://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/doc_object.asp
转自: http://five3.blog.163.com/blog/static/4787186020117186106737/
Page对象是页面的主体对象,用于包含各种Web控件,通过Page对象,可以访问下一层次的对象,例如页面的链接、图片等。
下面的例子就是获取页面中还包含的链接和图片的个数
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Link("REGISTER").Click
'等待浏览器完成当前导航动作,用于模拟用户等到页面加载完成的过程
browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Sync
linksCount = browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Object.links.length
print "链接总共有:" & linksCount
ImagesCount = browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Object.images.length
print "图片总共有:" & ImagesCount
1 alinkColor: 设置或获取元素中所有激活链接的颜色
1,childNodes 属性,标准的,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。
有些人错误的使用()去取该集合元素,下表列出各浏览器对childNodes(i)的支持情况:
IE6/7/8/Safari/Chrome/Opera | IE9/Firefox | |
childNodes(i) | 支持 | 不支持 |
有时候需要获取指定元素的第一个HTML子节点(非属性/文本节点),最容易想到的就是firstChild 属性。代码中第一个HTML节点前如果有换行,空格,那么firstChild返回的就不是你想要的了。可以使用nodeType来判断下。
1
2
3
4
5
6
|
function
getFirst(elem){
for
(
var
i=0,e;e=elem.childNodes[i++];){
if
(e.nodeType==1)
return
e;
}
}
|
2,children 属性,非标准的,它返回指定元素的子元素集合。经测试,它只返回HTML节点,甚至不返回文本节点。且在所有浏览器下表现惊人的一致。和childNodes 一样,在Firefox下不支持()取集合元素。因此如果想获取指定元素的第一个HTML节点,可以使用children[0]来替代上面的getFirst函数。需注意children在IE中包含注释节点。