QTP中的DOM操作

注:在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
设置或获取元素中所有激活链接的颜色
2 linkColor 设置或获取对象文档链接的颜色。
3 vlinkColor 设置或获取用户已访问过的链接颜色。
4 URL 设置或获取当前文档的 URL
5 location: 获取当前 URL 的信息。
6 title 设置或获取当前文档的标题。
7 protocol 设置或获取 URL 的协议部分。
8 readyState 获取表明对象当前状态的值。
9 alinkColor 设置或获取元素中所有激活链接的颜色。
10 bgColor 设置或获取表明对象后面的背景颜色的值。
11 fgColor 设置或获取文档的前景 ( 文本 ) 颜色。
12 all 返回对象所包含的元素集合的引用。
13 anchors 获取所有带有 name / id 属性的 a 对象的集合。此集合中的对象以 HTML 源顺序排列。
14 applets 获取文档中所有 applet 对象的集合。
15 childNodes 获取作为指定对象直接后代的 HTML 元素和 TextNode 对象的集合。
16 embeds 获取文档中所有 embed 对象的集合。
17 forms 获取以源顺序排列的文档中所有 form 对象的集合。
18 frames 获取给定文档定义或与给定窗口关联的文档定义的所有 window 对象的集合。
19 images 获取以源顺序排列的文档中所有 img 对象的集合。
20 links 获取文档中所有指定了 HREF 属性的 a 对象和所有 area 对象的集合。
21 namespaces 获取 namespace 对象的集合。
22 scripts 获取文档中所有 script 对象的集合。
23 styleSheets 获取代表与文档中每个 link style 对象的实例相对应的样式表的 styleSheet 对象的集合

1,childNodes 属性,标准的,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。

有些人错误的使用()去取该集合元素,下表列出各浏览器对childNodes(i)的支持情况:

 IE6/7/8/Safari/Chrome/OperaIE9/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中包含注释节点。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值