您的位置:首页 > Web前端 > HTML

Selenium自动化测试之Xpath网页元素定位

2017-02-28 15:48 357 查看
XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath虽然是被设计用来搜寻XML文档的,不过它也能很好的在HTML文档中工作,并且大部分浏览器也支持通过XPath来查询节点。

xpath的作用就是两个字“定位”,运用各种方法进行快速准确的定位,推荐两个非常有用的的firefox工具:firebug和xpath checker。

具体的语法请参考W3school

xpath基础

最常用的归纳几点:

1. /(绝对路径,从根节点选取)

2. //(相对路径,所有子代节点,不用考虑是否直接子节点)

3. @ 选取属性

4. “.”选取当前节点

5. “..”选取当前节点的父节点

实例:

/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素

/bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素

//title[@lang=’eng’] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性

xpath=(//input[@value=text])[8] 索引,第8个input的value=text

//div[contains(@class,’xxx’)] class包含xxx的div

//div[@class=’xxx’ and @type=’xxx’] 用and连接,以2个属性确定唯一元素,也是可以写成//span[@name=’xxx’][text()=’xxx’]

xpath拓展

following-sibling: 选择当前节点之后的所有同级节点,那么没有加上“sibling”关键字的,搜索的就是之上/之下的所有节点,忽略同级概念,例如:

<div>
<input id="123">
<input>
</div>


要定位第二个input://input[@id=’123’]/following-sibling::input

preceding-sibling: 选取当前节点之前的所有同级节点

starts-with: 以某某开头,例如://input[starts-with(@class,’xxx’)]

绝对路径 html/body/div/span[2]/input[2] 中间结构变化,就失效

相对路径 //开始,在整个html source里找,不管在什么位置

索引[x] //div/input[2] div下面第二个input

完全匹配 xpath=//*[text()=”Join”]

not关键字 就是否定的意思

比如找一个id不为123的input:input[not[id=’123’]]

又如找一个文本中不包含xxx字段的span://span[not(contains(text(),’xxx’))]

通配符 *

比如//span[@*=”xxx”]指定位span中任意属性包含xxx的

比如//[@=”xxx”]指定位页面中任意属性保护xxx的标签

实战积累

xpath=((//table[@class="dashboard-data-table"])[2]//td[contains(@style,"#8dd889")]//..//td[1]/a)[1]

xpath=(//a[@class='dijitStretch link'])[contains(@href,".zip&forceView=true")]


#实战积累# 持续更新中。。。

想要学习CSS Selector进行元素定位的童鞋,请移步:

Web元素定位之CSS Selector

http://blog.csdn.net/ywyxb/article/details/58607218
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息