先贴上练习xpath的地址:http://www.w3school.com.cn/example/xmle/books.xml

或则也可以使用百度进行练习

1.相对定位与绝对定位

//表示相对定位,对于经常发生变化的页面或者节点要用相对定位进行查找

/表示绝对定位,一成不变的时候可以用绝对定位进行查找

2.节点

顶级节点:bookstore

当前节点:“.

如果当前节点有多个则匹配多个

如果当前节点只有1个,则匹配1个

选取当前节点的节点..

对于html/body下的div来说它的父节点就是body,这是用绝对路径,表示必须从html下找到body再找到div,然后匹配div的父节点。

如果用相对路径来找父节点,可以看到从div开始就不考虑它的绝对位置,也就是说从body开始 符合父节点条件的所有元素都会被找出来。

查找当前节点下的所有元素://book[1]/..

这个是节点索引+父节点的方式

3.通过标签定位元素

//book:找到所有名为book的标签

再来一个百度的

4.属性定位

1.定位属性为category 的元素

//book[@category='cooking']  ‘[]’表示查找属性

2.使用text文本属性精确定位,text也可以用.代替

查找//book//price下文本为30.00的元素

查找year标签中text文本中大于2004的元素

3.使用contains模糊定位,contains意为包含

模糊定位查找文本信息包含Potter的元素://title[contains(text(),"Potter")]

扩充练习

4.”*”表示任何属性所有属性

查找所有带有属性值的://@*

查找title标签里所有有属性的元素:

用Not取反,表示查找title标签里没有属性的元素,这里没有所以没查找出来

@*表示所有属性

not(@*)表示没有属性

5.查找带有category属性的元素

//@category

5.逻辑运算符

1.通过and运算符定位元素

//book[@category="web" and @cover="paperback"]

2.通过or运算符定位元素
//book[@category="children" or @cover="paperback"]

3.通过取反not运算符定位元素

//book[not(position()>2)]  取book标签中position大于2的

//book[not(position()>2)]  not取反

//year[not(.=2005)]  表示取非2005文本节点的year节点

通过“>=”“<=”运算符定位元素
//price>=30 查找元素中是否存在price大于等于30的 存在返回Boolean true 不存在返回Boolean: false

4.通过“!”运算符定位元素

//book[@category!='web' ]

6.通过节点索引定位元素

1.查找第一个元素的

//book[1]:找到第一个标签为book的

2.通过position定位第3个元素

//bookstore/book[position()=3]

3.通过position取多个元素

//bookstore/book[position()>=2]

4.通过last()函数找到最后一个元素

//book[last()]

5.通过last()函数找到倒数第二个元素
//book[last()-1]

7.轴定位

查找book[1]/title的父元素://book[1]/title/parent::*

查找book[1]的子元素://book[1]/child::*

//book/child::price 查找book标签下的所有子元素中标签为price的

following-sibling的应用
//bookstore/book[1]/child::title/following-sibling::*

following-sibling表示当前节点的后序所有兄弟节点元素

就是说查找title后面所有兄弟节点

/bookstore/book[1]/child::title/following-sibling::author

following-sibling::author 指定查找title后面所有兄弟节点中名为author 的元素

preceding-sibling::* 表示当前节点的前面所有兄弟节点元素

//bookstore/book[1]/child::price/preceding-sibling::*  意为查找price节点前面所有的兄弟元素

查找祖先节点包括自身://book[1]/ancestor-or-self::*

查找子孙节点包括自身://book[1]/descendant-or-self::*

查找当前节点的所有元素://book[1]/preceding::* 查找当前节点下的所有元素

//book[2]//preceding::*  会把book[2]以及book[2]节点之前的所有元素都找出来

轴总结:

parent::* 表示当前节点的父节点元素
ancestor::* 表示当前节点的祖先节点元素
child::* 表示当前节点的子元素  /A/descendant::* 表示A的所有后代元素
self::* 表示当前节点的自身元素
ancestor-or-self::* 表示当前节点的及它的祖先节点元素
descendant-or-self::* 表示当前节点的及它们的后代元素
following-sibling::* 表示当前节点的后序所有兄弟节点元素
preceding-sibling::* 表示当前节点的前面所有兄弟节点元素
following::* 表示当前节点的后序所有元素
preceding::* 表示当前节点的所有元素

 

Xpath定位总结的更多相关文章

  1. java selenium (六) XPath 定位

    xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. 阅读目录 什么是xpath xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面, ...

  2. 常用的CSS定位,XPath定位和JPath定位

    CSS定位 举例 描述 div#menu id为menu的div元素 div.action-btn.ok-btn class为action-btn和ok-btn的div元素 table#emailLi ...

  3. selenium之xpath定位和input文本

    selenium之xpath定位和input文本 xpath简单定位: 打开浏览器的F12 在自己需要定位的元素的那里右键 选择copy->xpath selenium获取input下的文本: ...

  4. 5.5.8 XPath定位

    1.什么是XPath XPath定位方式是自动化测试定位技术中的必杀技,几乎可以解决所有的定位难题.它是XML Path语言的缩写,主要用于在XML 文档中选择文档中的节点.基于XML树状文档结构,X ...

  5. selenium+python自动化之xpath定位

    在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. 什么是 ...

  6. Xpath定位大全

    selenium使用Xpath定位之完整篇   其中有一片文章提到了xpath元素定位,但是该文章中有些并不能适应一些特殊与个性化的场景.在文本中提供xpath元素的定位终极篇,你一定能在这里找到你需 ...

  7. appium的xpath定位

    做自动化,元素定位是我们遇到的第一个困难.总是会有各种各样的问题,导致我们定位不到元素.前面一篇博客也写了元素定位的几种方法,今天主要分享一下xpath的定位方法. 这里我们仍然拿计算器举例. 比如我 ...

  8. Selenium-Python学习——通过XPath定位元素

    用Xpath定位元素的方法总是记不住,经常要翻出各种文档链接参考,干脆把需要用到的内容整到这个笔记中方便查找. Xpath是在XML文档中定位节点的语言.使用 XPath 的主要原因之一是当想要查找的 ...

  9. Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素

    在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click  button    id=l ...

  10. UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)

    Selenium下的Webdriver工具支持FireFox(geckodriver). IE(InternetExplorerDriver).Chrome(ChromeDriver). Opera( ...

随机推荐

  1. axure8.0注册码

    激活码:(亲测可用) 用户名:aaa 注册码:2GQrt5XHYY7SBK/4b22Gm4Dh8alaR0/0k3gEN5h7FkVPIn8oG3uphlOeytIajxGU 用户名:axureuse ...

  2. loadrunner controller:集合点策略

    集合点只有在多用户并发运行的时候才能体现它的作用. Scenario ---> Rendezvous 打开集合点设置界面,如下图所示: 我们可以看到Vusers 列表框里有两个用户,这与我们设置 ...

  3. .Net多线程编程—使用Visual Studio 2012进行调试

    1 相关概念 1)栈帧 C语言中,每个栈帧对应着一个未运行完的函数.栈帧中保存了该函数的返回地址和局部变量. 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构. 2)单步执行与单步函 ...

  4. 转:Oracle弃用sun.reflect.Reflection.getCallerClass

    http://www.infoq.com/cn/news/2013/07/Oracle-Removes-getCallerClass 作为Java开发者,我们经常忽略@Deprecated注释,继续使 ...

  5. page cache 与free

    我们经常用free查看服务器的内存使用情况,而free中的输出却有些让人困惑,如下: 先看看各个数字的意义以及如何计算得到: free命令输出的第二行(Mem):这行分别显示了物理内存的总量(tota ...

  6. Ubuntu安装搜狗拼音

    p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120% } p.western { font ...

  7. 小学生之Hibernate插入数据修改数据使用数据库默认值的实现

    最近在写一个案例,定时任务对数据库进行更新操作,废话不多说,上代码: @Component("taskJob") public class TaskJob extends Hibe ...

  8. Python学习--16 正则表达式

    正则表达式是一种描述性的语言,用来匹配字符串.凡是符合规则的字符串,我们认为就是匹配了. 正则表达式并非Python独有的,它与语言无关.很多语言都支持正则表达式. 我们经常用正则表达式来匹配电子邮件 ...

  9. MongoDB基础之一:Conetos下安装MongoDB

    1.下载自己需要的版本,我这用的是mongodb-linux-x86_64-2.4.9.tgz #cd /usr/local/src # wget http://fastdl.mongodb.org/ ...

  10. eNSP仿真学习,网络入门!

    为了简单的认识Internet的框架的整体结构,简单学习华为的eNSP软件来高度模拟仿真网络框架!(华为和思科公司都发布了自己的网络设备仿真软件,当然我就用国产的吧~) 华为官方的eNSP学习论坛网站 ...