qtp访问html,QTP-HTML DOM测试应用(转载)

本文详细介绍了HTML文档中的DOM对象及其在IE浏览器中的应用,包括修改控件属性、获取元素样式、性能提升等方面。同时,探讨了QTP(QuickTest Professional)中如何利用DOM进行自动化测试,提供了多种DOM方法和集合的使用示例,如getElementById、getElementsByName和getElementsByTagName等。此外,还讲解了如何通过DOM超控各种HTML元素,以及验证对象的属性和计算事务时间的方法。

HTML 文档中的每个元素、属性、文本等都代表着树中的一个节点

1339910976_8238.gif

DOM对象识别

IE可以使用【IEDevToolBar】或【IEWebDeveloperV2】

使用DOM的作用

1.修改控件自身接口

调用了DOM对象接口来修改控件的自身接口属性

2.DOM对象下CurrentStyle对象应用

CurrentStyle.是一个可以与HTML对象元素的style. sheets进行交互的接口,它可以获取对象元素的字体名、字体大小、颜色、是否可见等

3.性能提升

DOM的执行速度会比QTP的对象库执行速度快上好几倍,这是因为DOM相当于底层的对象接口,而QTP首先需要把对象属性进行封装,然后在脚本运行时调用对象库中的对象,最后与页面上的对象进行比对,如果属性匹配才可控制测试对象。而DOM却是直接找对象进行控制

补充知识点:

(1)在QTP中启动IE:

'在QTP中启动IE

systemutil.run"iexplore.exe"

(2)使用WSH启动IE:

'使用WSH启动IE

SetoShell=CreateObject("wscript.shell")

(3)使用IE COM对象:

'使用IE COM启动IE

SetoIE=CreateObject("InternetExplorer.Application")

oIE.Visible =True'设置可见

oIE.Navigate"http://www.baidu.com"'跳转URL

常用DOM属性、方法、集合:

(1)      常用DOM

l  ClassName:同一样式规则的元素用相同的类名。可通过className快速过滤出一组类似的元素

l  Document:用于指向包含当前元素的文档对象

l  Id:当前元素的标识。如果文档中包含多个相同的id的元素,则返回一个数组

l  innerTexr:用于指向当前元素的开始标记和结束标记之间的所有文本和HTML标签

l  offsetHeight、offsetWidth:元素的高度和宽度

l  offsetLeft、offsetTop:当前元素对父元素的左边位置和顶部位置

l  outerHTML:当前元素的开始标记和结束标记之间的所有文本和HTML标签

l  outerText:当前元素的开始标记和结束标记之间的所有文本,但不包括HTML标签

l  paraentElement:当前元素的父元素

l  sourceIndex:元素在document.all集合中的索引

l  style:元素的样式表单属性

l  tagName:当前元素的标签名

l  title:在IE中,代表元素的tool tip文本

(2)      常用DOM方法

l  Click():模拟用户对当前元素的鼠标点击

l  Contains(element):用于判断当前元素是否包含指定的元素

l  GetAttribute(attributeName,caseSenstive):返回当前元素所包含的某个属性,

参数attributeName为属性名,caseSensitive表示是否大小写敏感

l  SetAttribute(attributeName,value,caseSenstive):设置当前元素的属性

(3)      常用DOM集合

l  All[]:当前元素中包含的所有HTML元素的数组

l  Children[]:当前元素包含的子元素

注意:利用IE COM 测试时,注意等待IR页面加载完毕:【While oIE.Busy:Wend】

3种方法对比:getElementByID、getElementsByName、getElementsByTagName

结合IE对象模型获取document对象的方法:[object.Document]其中object为IE对象

Set TE = CreateObject(“InternetExplorer.Application”)

OIE.visible = true

Set Doc = OIE.Document

(1)通过getElementByID方法获取定位对象

With oDoc

'搜索框输入

.getElementByID("kw").value ="zzxxbb112"

'点击百度搜索

.getElementByID("sb").Click

End With

(2)      通过getElementsByName方法获取定位对象

Set Edits =oDoc.getElementsByName("wd")

'遍历对象并对其进行操作

For Each oEdit In oEdits

oEdit.value = "zzxxbb112"

Next

'点击百度搜索

oDoc.getElementByID("sb").Click

(3)      通过getElementsByTagName方法获取定位对象

'获取TAG名为INPUT的元素集合

Set Edits =oDoc.getElementsByTagName("INPUT")

'遍历对象并判断文本框对其进行操作

For Each oEdit In oEdits

If oEdit.type="text" Then

oEdit.value = "zzxxbb112"

End If

Next

'点击百度搜索

oDoc.getElementByID("sb").Click

注意:区别【getElementByID】返回的是单个对象,而【getElementByName】和【getElementByTagName】返回的是数组

利用FORM名来获取对象元素

用IE DEV查看百度的搜索框对应的FORM名,在IE DEV中查看得到FORM名为f

SetoIE = createObject("InternetExplorer.Application") '使用IE COM启动IE

oIE.visible= true '设置可见

oIE.Navigate"http://www.baidu.com" '跳转URL

WhileoIE.Busy :Wend '等待IE页面加载完毕

SetoDoc = oIE.Document '获取Document对象

oDoc.f.wd.value= "youmama" '获取FORM名为F下名为WD的元素并输入

oDoc.f.su.Click '获取FORM名为F下名为Su的元素并点击

SetoDoc = nothing

SetoIE = nothing

访问Web页面的Script中的变量格式:object.parrentWindow.varName

如:在百度源文件中的JavaScript脚本中定义了一个变量为W,并且赋值为document.f.wd

SetoDoc = oIE.Document

'获取百度搜索框对象

SetoEdit=oDoc.parentWindow.w

'并对其进行输入

oEdit.value= "zzxxbb112"

'获取FORM名为F下名为SB的元素并点击

oDoc.f.sb.Cclick

使用QTP中的DOM超控各类HTML元素

QTP中访问DOM对象的方法:SetsDom = Browser("").Page("").Objec

示例:

QTP中代码样例

操控方式1:

‘获取DOM对象

setoDocument = Browser("Browser").Page("Page").Object

‘使用GetElementByID获取对象元素,并更改文本框WebEdit的value属性值

oDocument.getElementById("ID_001").value= "zzxxbb112"

操控方式2:

'获取DOM对象

setoDocument = Browser("Browser").Page("Page").Object

'使用GetElementsByName获取对象元素,并更改文本框WebEdit的value属性值

oDocument.getElementsByName("NAME_001")(0).value= "zzxxbb112"

操控方式3:

'获取DOM对象

setoDocument = Browser("Browser").Page("Page").Object

'如果ID和name都是空的,可以使用getElementsByTagName

SetallElements = oDocument.getElementsByTagName("INPUT")

For eachelementinallElements

Ifelement.value="QuickTest"Then

element.value="zzxxbb112"

End If

Next

对于其他控件的一些操作说明:

【webButton/link】使用click方法

【webCheckBox】使用checked方法

【WebRatioGroup】

HTML源代码样例:

QTP中代码样例。

操控方式:

'获取DOM对象

set Document = Browser("Browser").Page("Page").Object

'通过GetElementsByName获取对象元素后选取Radio单选按钮

oDocument.getElementsByName("sex").item(1).checked=true

【WebList/webComboBox】

HTML源代码样例:

child_001

child_002

child_003

QTP操作方式:

'获取DOM对象

set Document = Browser("Browser").Page("Page").Object

'使用GetElementByName方法获取List对象,

set ListObjElements = oDocument.getElementsByName("NAME_001").item(0)

'遍历List列表,根据关键字选取List项

For i=0 to ListObjElements.Options.length-1

If ListObjElements.Options(i).value = "child_002" Then

ListObjElements.Options(i).selected = true

End If

Next

【WebTable】

HTML源代码样例:

A1B1
A2B2

QTP中代码样例。

操控方式:

'获取DOM对象set Document = Browser("Browser").Page("Page").Object

'获取WebTable对象元素set bjTable = oDocument.getElementById("ID_001")

'打印WebTable的行数msgbox objTable.rows.length

'打印WebTable的单元格数量msgbox objTable.cells.length

'打印WebTable第二行第一个单元格中的内容msgbox objTable.rows(1).cells(0).outertext

注意:此处表格对象含有两个对象集合:Rows(所有行)和Cells(所有单元格)。

innerHTML、innerText和outerHTML、outerText的区别

1339910915_9024.gifinnerHTML 设置或获取位于对象起始和结束标签内的 HTML

outerHTML 设置或获取对象及其内容的 HTML 形式

innerText 设置或获取位于对象起始和结束标签内的文本

outerText 设置(包括标签)或获取(不包括标签)对象的文本

注意:innerText和outerText在获取时是相同效果,但在设置时,innerText仅设置标签内的文本,而outerText设置包括标签在内的文本

1)、innerHTML与outerHTML在设置对象的内容时包含的HTML会被解析,而innerText与outerText则不会。

2)、在设置时,innerHTML与innerText仅设置标签内的文本,而outerHTML与outerText设置包括标签在内的文本。

使用CurrentStyle验证对象

HTML源代码样例:

.class_visible { visibility:"visible"}

.class_hidden  { visibility:"hidden"}

DHTML using DISPLAY

QTP检验的方法:

'获取DOM对象set ElementDocument = Browser("Browser").Page("Page")._

WebElement("html id:=id_001").Object

isVisible = oElementDocument.currentstyle.visibility

If isVisible="hidden" Thenmsgbox "object is hidden"

else

msgbox "object is visible"

End If

currentStyle还可以验证许多QTP本身无法验证的属性,如字体名、字体大小、字体颜色等

计算事务时间方法【Services.StartTransaction】【Services.EndTransaction】:

Services.StartTransaction "inputBefore"

For i=1 to 100

Browser("Browser").Page("Page").WebEdit("name:=text_"+cstr(i)).Set "zzxxbb112"

Next

Services.EndTransaction "inputBefore"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值