Selenium自动化测试之Xpath网页元素定位
2017-02-28 15:48
357 查看
XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath虽然是被设计用来搜寻XML文档的,不过它也能很好的在HTML文档中工作,并且大部分浏览器也支持通过XPath来查询节点。
xpath的作用就是两个字“定位”,运用各种方法进行快速准确的定位,推荐两个非常有用的的firefox工具:firebug和xpath checker。
具体的语法请参考W3school
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’]
要定位第二个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的标签
#实战积累# 持续更新中。。。
想要学习CSS Selector进行元素定位的童鞋,请移步:
Web元素定位之CSS Selector
http://blog.csdn.net/ywyxb/article/details/58607218
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
相关文章推荐
- 在selenium测试中使用XPATH功能函数starts-with、contains、descendant、ancestor、text()定位网页元素
- 在selenium测试中使用XPATH功能函数starts-with、contains、descendant、ancestor、text()定位网页元素
- Selenium2自动化测试的元素定位
- 浏览器检查selenium的xpath、css定位,助你轻松搞定元素定位
- selenium使用Xpath+CSS+JavaScript+jQuery的定位方法 - 专治各种定位不准并发症
- selenium使用Xpath+CSS+JavaScript+jQuery的定位方法(治疗selenium各种定位不到,点击不了的并发症)
- Selenium2 入门[1] —— 获取XPath来定位元素 : Frebug , FirePath 插件的安装及使用
- selenium定位页面元素时xpath定位技巧(一)
- 【自动化测试】Selenium - 定位
- 自动化测试-selenium-定位iframe下元素
- java selenium (六) XPath 定位
- Selenium怎样利用Xpath定位元素
- selenium_xpath定位
- selenium + java + js + jquery + xpath各种定位
- selenium使用Xpath+CSS+JavaScript+jQuery的定位方法(治疗selenium各种定位不到,点击不了的并发症)
- java selenium (六) XPath 定位
- java selenium (六) XPath 定位
- Selenium使用Xpath定位元素及实例(1)
- selenium使用Xpath定位之完整篇
- Python+Selenium xpath 定位遇到相同元素时的解决方法父节点找子节点