在QTP中使用DOM

大家对DOM应该都不陌生,它在网页制作中有广泛的应用。如果我们想在QTP中使用DOM模型需要通过Page对象的Object属性来实现。注意,QTP11才有良好的DOM支持操作,这里用百度首页做例子。

我们需要做的是在百度的搜索输入框中输入"qtp"并改变输入框的样式

'改变搜索框样式

Set odom=Browser("百度一下,你就知道").Page("百度一下,你就知道").Object
odom.getElementById("kw").value="qtp"
odom.getElementById("kw").style.border="2px solid red"

 

input标签的ID可以通过IE开发者工具查到,按下F12就可以了。想快速定位的话,按下CTRL+B,鼠标移到输入框上,单击即可。

当需要操作的对象很多的时候,使用DOM可以快速的完成。例如,我们想输出百度知道页面的所有A标签,使用DOM的方式获取更为快速。

 1 services.StartTransaction "GetA"
 2 Set link_obj=description.Create
 3 link_obj("micClass").value="Link"
 4 
 5 Set links= Browser("百度知道 - 全球最大中文互动问答平台").Page("百度知道 - 全球最大中文互动问答平台").ChildObjects(link_obj)
 6 For i=0 to links.count-1
 7     print links.item(i).GetROProperty("text")
 8 Next
 9 services.EndTransaction "GetA"
10 
11 services.StartTransaction "GetB"
12 Set dom=Browser("百度知道 - 全球最大中文互动问答平台").Page("百度知道 - 全球最大中文互动问答平台").Object
13 
14 Set adoms=dom.getElementsByTagName("a")
15 
16 For each adom in adoms
17     print adom.innerHTML
18 Next
19 services.EndTransaction "GetB"

 

DOM还可以做很多QTP不能做的事情,例如,我们想使百度首页的A标签全部不显示,DOM可以很简单的完成

1 Set dom=Browser("百度知道 - 全球最大中文互动问答平台").Page("百度一下,你就知道").Object
2 
3 Set adoms=dom.getElementsByTagName("a")
4 
5 For each adom in adoms
6     adom.style.display="none"
7 Next

 

posted @ 2014-01-13 21:03  huntstack  阅读(546)  评论(0编辑  收藏  举报