在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