XPATH表达式

上一篇 / 下一篇  2010-12-21 15:08:29 / 个人分类:自动化测试

xpath常用路径表达式如下:
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.选取当前节点
..选取当前节点的父节点
@指定属性
示例一:使用属性定位识别元素
//div[@id=’categories’]
选 取id为categories的div,返回所有符合条件节点
Watir代码:
@ie.div(:xpath,”//div[@id='categories']“)
示 例二:使用tag以及数组位置定位元素
//a
返回所有a子元素,无论它们在文档中的位置
Watir代码:
@ie.link(:xpath,”//a”)
注:watir中使用该xpath自动返回元素集中的第一个元素,该代 码与@ie.link(:xpath,”//a[1]”)效果相同。若需要识别其他位置元素,可使用数组方式定位识别, 如:@ie.link(:xpath,”//a[2]”).click点击第二个tag为a的元素,@ie.link(:xpath,” //a[last()]”)点击最后一个tag为a的元素
示例三:使用相对路径识别元素
//a[1]/../../../../../../div[2]/input
首 先找到第一个a元素,一层层定位到根节点下第二个div,再选取input节点
Watir代码:
@ie.text_field(:xpath,”//a[1]/../../../../../../div[2]/input”).set ‘test
注:使用相对路径可以去除对id,name等属性的依赖,当页面元素缺乏类似属性来定位识别时,可以使用该方法进行控件操作
示 例四:根据模糊属性定位元素
//a[contains(@href , ' crafts ')]
定位到href属性值中含有crafts的a元素
Watir代码
@ie.link(:xpath,”//a[contains(@href,'crafts')]“).click
示 例五:属性不被Watir支持,但可通过xpath识别
//select[@foo='bar')]
当遇 到有属性名为foo的情况,watir并不支持通过该属性来定位查询元素,但可通过xpath查询识别
Watir代码:
@ie.select_list(:xpath,”//select[@foo='bar')]“).select ‘Art’
示例五:使用element_by_xpath扩展Watir不支持的控件
Watir代码:
puts @ie.element_by_xpath(”//object”).name
注:某些页面标签并不被Watir所支持,比如object,可以通过这种方法获取元素

附表一:Watir识别HTML元 素的方法(From Wiki

How?

HTML源码

Watir代码

:action

<form. action=”page.htm”>

ie.form(:action, /page/).click

只可用于form元素, 通过指定form提交的url来识别

:after?

<a>one</a> <a>two</a> <a>one</a>

ie.link(:after?, ie.link(:text, “two”)).click

定位到指定元素之后的页面控件

:class

<a>

ie.link(:class, “header”).click

当元素有class属性时可以使用其进行定位、识别

:for

<label for=”header”>

ie.label(:for, “header”).click

只可用于定位label元素

:href

<a href=”page.htm”>

ie.link(:href, /page/).click

可使用href属性定位超链接

:id

<a>

ie.link(:id, “header”).click

用于通过id识别控件,由于xhtml说明中定义 了id唯一,推荐使用这种最为可靠的识别方式

:index

<button>

ie.button(:index, 1).click

用 于定位页面指定类别第N个元素。目前的Watir版本中从index1开始计数,但以后可能会从0开始计数。

:method

<form. method=”get”>

ie.form(:method, “get”).click

仅可用于定位form元素,formmethod属 性值可以是getpost

:name

<a>

ie.link(:name, “header”).click


:src

<img src=”photo.png”>

ie.image(:src, /photo/).click

当需要通过URL来识别一个图片元素时使用

:text

<a>click me</a>

ie.link(:text, “click me”).click

可用于识别包含文本的页面元素,如link,span,div

:title

<a title=”header”>

ie.link(:title, “header”).click

识别含有title属性的元素

:value

<input value=”text”>

ie.text_field(:value, “text”).click

用于识别含有默认值的text field元素或button元素

:url

<a href=”page.htm”>

ie.link(:url, /page/).click

url属性和href属性相同

:xpath

<a href=”page.htm”>

ie.link(:xpath,”//a[@href='page.htm']“).click

使用xpath定位元素

multiple attribute

<a>click me</a> <a>click me</a>

ie.link(:text => “click me”, :index => 2).click

可以使用多个属性联合定位识别,如本例所示,将点击文本 为”click me”的第二个链接


TAG:

 

评分:0

我来说两句

Open Toolbar