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版本中从index为1开始计数,但以后可能会从0开始计数。 |
:method | <form. method=”get”> | ie.form(:method, “get”).click | 仅可用于定位form元素,form的method属 性值可以是get或post |
: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属性相同 |
path | <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: