QTP11使用DOM-XPath以和CSS识别元素对象_第1页
QTP11使用DOM-XPath以和CSS识别元素对象_第2页
QTP11使用DOM-XPath以和CSS识别元素对象_第3页
QTP11使用DOM-XPath以和CSS识别元素对象_第4页
QTP11使用DOM-XPath以和CSS识别元素对象_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、QTP11使用 DOM XPath以及 CSS识别元素对象我们知道, 像 DOM,Html,CSS,XPath 等对对象的识别策略广泛运用于一些开 源的工具,例如: Selenium ,Watir,Watir-Webdriver ,以前 qtp 版本是不支持 这些东西的,现在 qtp11 对这些已经支持了,下面我们就看看这些特性:Document Object Model (DOM):这东西干嘛的 ,百度之。 像下面的这些方法能使用在 qtp 中:方法描述getElementById使用已知的元素 id ,返回第一个页面 元素getElementsByName返回具有指定名称的一个 JavaS

2、cript 数组中的所有元素getElementsByTagName返回和指定的标记名的 JavaScript 数 组的所有元素在 qtp 里调用 JavaScript 方法:Object.RunScript(script)例如:Browser(title:= 百度一下,你就知道 ).Page(title:= 百度一下,你就知 道 ).RunScript (alert(hello);)Using HTML DOM Methods & Properties in QTP:要访问 HTML DOM方法,我们需要使用的文档对象,我们可以使用 getElementById 这个方法,用他的 id 来获

3、取页面元素。例如:Set kws=Browser(title:= 百度一下, 你就知道 ).Page(title:= 百度一下, 你就知道 ).RunScript (document.getElementById(kw);)kws.value = 百度一下 Set us=Browser(title:= 百度一下, 你就知道 ).Page(title:=百度一下,你就知道 ).RunScript (document.getElementById(su);)us.click但是我们对于一些页面没有定义 id 的但是定义了名称,我们就可以使用 getElementsByName这个方法来解决,例如:

4、Set kws=Browser(title:= 百度一下, 你就知道 ).Page(title:= 百度一下,你就知道 ).RunScript (document.getElementsByName(wd)(0);)kws.value = 百度一下 而这里使用 getElementsByName注意需要索引值,因为他是返回一个JavaScript 数组。如果使用 getElementsByTagName,我们就不需要 name或者 id 了。例如:Set kws=Browser(title:= 百度一下, 你就知道 ).Page(title:= 百度一下,你就知道 ).RunScript (d

5、ocument.getElementsByTagName(input)(0);) kws.value = 百度一下 这里不好的地方就是, 当有多个的时候, 它的 index 属性无法直接写出并且当 index 改变了,脚本也要改变。 通常情况下,我们都是使用组合键来识别相应的元素对象,例如: set wd=Browser(name:=.* - 六间房秀场 .*).Page(title:=.* - 六间房秀场 .*).RunScript(document.getElementById(chatForm).getElementsByTagName(input)(2) ;)wd.value =tes

6、ting和此同时,我们也可以使用元素之间的关系来识别一些元素,例如:document.getElementById(document.getElementById(document.getElementById(document.getElementById( nextSiblingdocument.getElementById(previousSiblingXXX).firstChildXXX).lastChildXXX).parentNodeXXX).XXX).通过使用 getElementById 返回第一 个子元素通过使用 getElementById 返回最后 一个子元素通过使用 g

7、etElementById 返回父节 点通过使用 getElementById 返回下一 个兄弟元素通过使用 getElementById 返回前一 个兄弟元素使用 XPath:在 QTP11中,XPath 是另一种重要的识别元素的方式,当然它也像其它工具 一样被广泛的使用于开源工具中,下面就介绍下载 qtp11 中改方式的特性。XPath即为 XML路径语言( XML Path Language),它是一种用来确定 XML 文档中某部分位置的语言。XPath 基于 XML的树状结构,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于 XPointer

8、和 XSL间的语法模 型。但是 XPath 很快的被开发者采用来当作小型查询语言。(详细的介绍看这 里:)QTP提供了两种使用 XPath 的方式,一种是在tools- options Webadvance中d ;另一种就是你自己通过编程使用 XPath 的 方法和属性。这里主要介绍第二种:下面就看一个采用描述性编程来使用 XPath 的方法的例子:Browser(name:= 百度一下,你就知道 ).Page(title:= 百度一下,你就知 道 ).WebEdit(xpath:=/input).Set testing在这个例子中,我们使用的是 /input ,” / ”在 xpath 中表

9、示贪婪查询, 他会变量 html 中所有的元素,直到找到为止。同时如果我们知道元素的确定位置,我们也可以利用绝对路径来定位,如:Browser(name:= 百度一下,你就知道 ).Page(title:= 百度一下,你就知 道 ).WebEdit(xpath:=/html/body/div2/div/form/input).Set testing这里比较麻烦的是, 这个绝对路径, 我们可以通过火狐来查看同时采用这个 定位是非常快的,不过元素如果改变了,就悲催了 ,未完待续 下面来介绍,在 xpath 中使用元素属性来定位元素:常用的元素属性有, ID,name,index,value,typ

10、e 等,在 xpath 中,我们可 以这样使用:Xpath:=/elementattribute= attribute value 例如:Browser(name:= 百度一下,你就知道 ).Page(title:= 百度一下,你就知 道 ).WebEdit(xpath:=/inputid=kw).set testing当然,我们也可以使用多个属性来定位元素,如:Xpath:=/elementattribute= attribute value and attribute= attribute value Browser(name:= 百度一下,你就知道 ).Page(title:= 百度一下

11、,你就知 道).WebEdit(xpath:=/inputid=kwand type=text ).settesting在一些使用 AJAX构建的网站,通常他们的元素属性是动态的,例如 ids,name, 他们随着网页动态加载变化而变化,此时我们可以使用部分匹配的原则来定位这 些元素。在 xpath 中,提供了一些常见的函数,例如: cotains(),start-with(),end-with(), 语法如下:/elementstart- with(attribute, attribute partial value)/ elementend- with(attribute, attribu

12、te partial value )/elementcotains(attribute,attribute partial value)例如下面的例子:我们可以这样定位元素:Browser(name:=XXX).Page(title:=XXX).WebEdit(xpath:=/divid= login_area /inputstart-with(id, text_ ) ).set testing同理,其它方法也是这样用。在这里有一种方法,直接使用 text() 来定位元素,这个是很方便的。语法 如下:/elementtext()=inner text例如:Browser(name:= 百度一下

13、,你就知道 ).Page(title:= 百度一下,你就知 道).link(xpath:=/atext()=注册 ).Click当然我们也可以结合 contains(),start-with() 来使用。语法如下:/elementcontains(text(), inner text )例如:ss=Browser(name:= 百度一下, 你就知道 ).Page(title:=百度一下, 你就知道 ).link(xpath:=/acontains(text(), 注 ).GetROProperty(name)msgbox ss ss=注册在 qtp11 中还介绍了关于 xpath 轴的知识,

14、这部分没找到相关例子, 就不介 绍了,感兴趣的去看下 w3school 上关于 xpath 轴的介绍。CSS在 QTP11中使用:QTP11中也增加了 CSS来识别页面对象属性, 关于 css 的介绍以及使用可以 看 w3school 。在 qtp11 中使用 css 的语法如下:Css:=Element.class_attribute例如:Browser(name:= 百度一下,你就知道 ).Page(title:= 百度一下,你就知 道 ).WebEdit(css:=input.s_ipt ).set testing在 dom,xpath 中均能使用 id ,在 css 中也可以使用 id

15、 。在 css 中使用 id 的语法如下:Css:=element#id例如:Browser(name:= 百度一下,你就知道 ).Page(title:= 百度一下,你就知 道 ).WebEdit(css:=input#kw ).set testing当然,在 css 中我们也可以使用元素的属性来识别页面对象,其语法如下:Css:=elementattribute=value例如:Browser(name:= 百度一下,你就知道 ).Page(title:= 百度一下,你就知 道 ).WebEdit(css:=inputname=wd ).set testing另外,css 中也提供了类似

16、xpath 中的部分识别属性的方法, 具体方法如下:OperatorDescription=attribute_value找到以给定的属性值的开始的元 素,这个和 xpath 中的 starts-with() 函数相似。*= attribute_value找到包含给定属性值的元素 . 这个 和 xpath 中的 contains() 函数相似。$= attribute_value找到以给定的属性值的结束的元 素 . 这个和 xpath 中的 ends-with() 函 数相似。例如:Browser(title:=XXX).Page(title:=xxx).WebEdit(“ css:=div#login_areainputname= text_ ”).set “te

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论