QTP-HTML DOM测试应用

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


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

Set oShell=CreateObject("wscript.shell")

  (3)使用IE COM对象:

'使用IE COM启动IE

Set oIE = 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种方法对比:getElementByIDgetElementsByNamegetElementsByTagName

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

Set OTE = CreateObject(“InternetExplorer.Application”)

OIE.visible = true

Set oDoc = OIE.Document

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

With oDoc

'搜索框输入

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

'点击百度搜索

.getElementByID("sb").Click

End With

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

Set oEdits =oDoc.getElementsByName("wd")

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

For Each oEdit In oEdits

        oEdit.value = "zzxxbb112"

Next

'点击百度搜索

oDoc.getElementByID("sb").Click

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

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

Set oEdits =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对象的方法:Set sDom = Browser("  ").Page("  ").Objec

示例:

<INPUTtype ="text" value="QuickTest" id="ID_001"name="NAME_001" >

QTP中代码样例

操控方式1

获取DOM对象

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

 

使用GetElementByID获取对象元素,并更改文本框WebEditvalue属性值

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

  操控方式2

'获取DOM对象

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

 

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

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

  操控方式3

'获取DOM对象

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

 

'如果IDname都是空的,可以使用getElementsByTagName

Set allElements = oDocument.getElementsByTagName("INPUT")

For each element in allElements

 If element.value="QuickTest" Then

     element.value="zzxxbb112"

 End If

Next

 

 

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

         【webButton/link】使用click方法

         【webCheckBox】使用checked方法

    【WebRatioGroup】

HTML源代码样例:

<input type="radio" name="sex" value="" checked="checked">

<input type="radio" name="sex" value="">

QTP中代码样例。

  操控方式:

'获取DOM对象

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

 

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

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

         【WebList/webComboBox】

    HTML源代码样例:

<SELECT name = "NAME_001">

        <option value = "child_001">child_001</option>

        <option value = "child_002">child_002</option>

        <option value = "child_003">child_003</option>

</SELECT>

    QTP操作方式:

'获取DOM对象

set oDocument = 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源代码样例:

<table id="id_001" border=1>

 

                              <tr>

                                       <td>A1</td>

                                       <td>B1</td>

                              </tr>

 

                              <tr>

                                       <td>A2</td>

                                       <td>B2</td>

                              </tr>

</table>

QTP中代码样例。

  操控方式:

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

'获取WebTable对象元素
set objTable = 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的区别


  • innerHTML 设置或获取位于对象起始和结束标签内的 HTML
  • outerHTML 设置或获取对象及其内容的 HTML 形式
  • innerText 设置或获取位于对象起始和结束标签内的文本
  • outerText 设置(包括标签)或获取(不包括标签)对象的文本

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

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

使用CurrentStyle验证对象

HTML源代码样例:

<style>
         .class_visible { visibility:"visible"}
         .class_hidden  { visibility:"hidden"}
</style>
<div class=class_hidden id="ID_001">
         <p> DHTML using DISPLAY </p>
</div>

QTP检验的方法:

'获取DOM对象
set oElementDocument = Browser("Browser").Page("Page")._
WebElement("html id:=id_001").Object

isVisible = oElementDocument.currentstyle.visibility

If isVisible="hidden" Then
   
msgbox "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"

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值