Qtp中的对象加上一个object就变成dom中的元素对象了,就可以使用dom中的原始的方法了。
当转成dom对象后,就不能够使用使用Qtp封装的方法了。
dom 中的元素对象: Node;
element是node对象中的一种。
DOM下,HTML文档各个节点被视为各种类型的Node对象。每个Node对象都有自己的属性和方法,利用这些属性和方法可以遍历整个文档树。由于HTML文档的复杂性,DOM定义了nodeType来表示节点的类型。这里列出Node常用的几种节点类型:
attributes
如果该节点是一个Element,则以NamedNodeMap形式返回该元素的属性。
childNodes
以Node[]的形式存放当前节点的子节点。如果没有子节点,则返回空数组。
firstChild
以Node的形式返回当前节点的第一个子节点。如果没有子节点,则为null。
lastChild
以Node的形式返回当前节点的最后一个子节点。如果没有子节点,则为null。
nextSibling
以Node的形式返回当前节点的兄弟下一个节点。如果没有这样的节点,则返回null。
nodeName
节点的名字,Element节点则代表Element的标记名称。
nodeType
代表节点的类型。
parentNode
以Node的形式返回当前节点的父节点。如果没有父节点,则为null。
previousSibling
以Node的形式返回紧挨当前节点、位于它之前的兄弟节点。如果没有这样的节点,则返回null。
Node对象常用方法:
方法
描述
appendChild()
通过把一个节点增加到当前节点的childNodes[]组,给文档树增加节点。
cloneNode()
复制当前节点,或者复制当前节点以及它的所有子孙节点。
hasChildNodes()
如果当前节点拥有子节点,则将返回true。
insertBefore()
给文档树插入一个节点,位置在当前节点的指定子节点之前。如果该节点已经存在,则删除之再插入到它的位置。
removeChild()
从文档树中删除并返回指定的子节点。
replaceChild()
文档树中删除并返回指定的子节点,用另一个节点替换它。
DOM在qtp中的应用
1.何时在qtp中使用DOM
1)修改控件自身接口
2)DOM对象下CurrentStyle对象应用
3)性能提升
DOM的执行速度比QTP执行速度快好几倍,因为DOM相当于底层的对象接口,而QTP是经过封装对象,然后运行时调用对象库中的对象,在和页面进行比较。利用DOM获取对象的时候,没有这些步骤,直接执行。
2.利用DOM操作测试对象的应用
DOM获取对象的3种方法: getElementByID,getElementsByName,getElementsByTagName
Set oDoc = oIE.Document
with
.getElementByID("kw").value="cheng"
.getElementByID("sb").click
end with
Set oDoc = nothing
Set oIE= nothing
3.利用form名来获取对象元素
Set oDoc = oIE.Document
oDoc.f.wd.value="hello" --获取form名为f下名为wd的元素并输入
oDoc.f.sb.click --获取form名为f下名为sb的元素并点击
Set oDoc = nothing
Set oIE= nothing
4.访问web的script对象
通过dom可以直接访问javascript或者vbscript的变量。
Set oDoc = oIE.Document
Set oEdit =oDoc.parentWindow.w --获取百度搜索框对象
oEdit.value="hello"
oDoc.f.sb.click --获取form名为f下名为sb的元素并点击
Set oDoc = nothing
Set oIE= nothing
说明:通过parentWindow访问web页面的script中的变量。
5.DOM在qtp中的具体应用
在qtp中访问DOM,只需要使用page对象,并调用page对象的object封装属性,qtp就能访问到顶层的DOM对象。
qtp中访问DOM对象的方法:
set sDom = Browser("").page("").object
这里的object属性只支持ie,不支持其他的浏览器。
具体的调用方法如下:
set sDom = Browser("browser").Page("page").Object
sDom.getElementById("ID_001").value="hello" --webedit对象
sDom.getElementById("ID_001").click --按钮对象
sDom.getElementById("ID_001").checked=true --webcheckbox对象