XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
XPath 含有超过 100 个内建的函数。这些函数用于字符串值、数值、日期和时间比较、节点和 QName 处理、序列处理、逻辑值等等。
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点
http://www.w3school.com.cn/example/xmle/books.xml
节点(Node):
<bookstore> (文档节点)
<author>J K. Rowling</author> (元素节点)
 lang="en" (属性节点)
基本值(或atomic value):
基本值是无父或无子的节点。
例子:J K. Rowling, "en“
父节点(parent):
每个元素以及属性都有一个父
例子:book 元素是 title、author、year 以及 price 元素的父

 
 
XML 文档是被作为节点树来对待的。
树的根被称为文档节点或者根节点
Star--》
//代表从目录中任意位置查找:相对路径查找,一般多用相对路径查找,可以找到变化结构的元素
/必须顺序从一个目录结构查找绝对路径:/bookstore/
 
//* 查找全部
parent::* 表示当前节点的父节点元素
ancestor::* 表示当前节点的祖先节点元素
child::* 表示当前节点的子元素  /A/descendant::* 表示A的所有后代元素
self::* 表示当前节点的自身元素
ancestor-or-self::* 表示当前节点的及它的祖先节点元素
descendant-or-self::* 表示当前节点的及它们的后代元素
following-sibling::* 表示当前节点的后序所有兄弟节点元素
preceding-sibling::* 表示当前节点的前面所有兄弟节点元素
following::* 表示当前节点的后序所有元素
preceding::* 表示当前节点的所有元素
//title[@*] ---表示所有含有属性的title元素
//food[1] 等价于==//food[position()=1] 查找第一个元素
position()可用表达式:如//food[position()>1] 函数匹配position()
//book[not(position()>2)] ---取不大于2定位的元素
 
//food[last()] 查找最后一个元素,函数匹配last()
 
倒数第二个://food[last()-1]
 
@xxx代表属性=‘xxx’ 根据属性查找
//book[@category="web" and @cover="paperback"]----高阶用法:找到单个属性不唯一,可以组合其他属性来变为唯一性
//book[@category="web" or @cover="paperback"]
//book[@category=!"web"]
 
 
统计多个连接,可以模糊匹配多个contains
//book[contains(.,"Potter")] 包含Potter对象
//book/title[contains(.,"Potter")] 包含Potter对象==//book/title[contains(text(),"Potter")]
精确匹配://book/year[text(),="2015"]
//book/year[text()<="2015"]
//book/year[not(.="2015")]
高阶用法:用属性无法定位,找相邻元素定位元素--轴:--适用于较难定位的元素方法
/bookstore/book[1]/following-sibling::*;代表book[1]下面的所有同级元素
/bookstore/book[1]/price/following-sibling::*;代表book[1]下级price下面的所有同级元素
/bookstore/book[1]/price/preceding-sibling::*;代表book[1]下级price前面的所有同级元素
/bookstore/book[1]/price/parent::*;代表book[1]下级price前面的所有父级元素
/bookstore/book[1]/price/child::*;代表book[1]下级price前面的所有父级元素
/bookstore/book[1]/price/descendant::*;代表book[1]下级price前面的所有子孙级元素
借鉴下面:
 

xpath元素定位方法的更多相关文章

  1. Selenium定位一 --单个元素定位方法

    Selenium-Webdriver 提供了强大的元素定位方法,支持以下三种方法. 单个对象的定位方法 多个对象的定位方法 层级定位 定位单个元素在定位单个元素时,selenium-webdriver ...

  2. selenium自动化测试——常见的八种元素定位方法

    selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...

  3. Python3+Selenium2完整的自动化测试实现之旅(三):Selenium-webdriver提供的元素定位方法

    本篇以实例介绍selenium下的webdriver模块提供的定位页面元素(也可以称为对象)的方法和使用技巧,在此注意:在做WEB自动化测试前,需要对前端相关的技术有所了解,如HTML.XML.Xpa ...

  4. 不支持find_element_by_name元素定位方法,抛不支持find_element_by_name元素定位方法,会抛如下错误 org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this session的解决

    appium1.5后不支持find_element_by_name元素定位方法,会抛如下错误 org.openqa.selenium.InvalidSelectorException: Locator ...

  5. Selenium之WebDriver元素定位方法

    Selenium WebDriver 只是 Python 的一个第三方框架, 和 Djangoweb 开发框架属于一个性质. webdriver 提供了八种元素定位方法,python语言中也有对应的方 ...

  6. Selenium2(WebDriver)总结(三)---元素定位方法

    元素定位的重要性不言而喻,如果定位不到元素谈何操作元素呢,webdrvier提供了很多种元素定位方法,如ID,Name,xpath,css,tagname等. 例如需要定位如下元素: <inpu ...

  7. Robotframework + Appium 之常用元素定位方法

    任何自动化测试,其实手动测试也是一样的,元素定位(目标定位)是首要任务,这是最直接的测试对象呀! 好了,废话不多说,又到了元素定位啦,之前我们已经介绍过selenium及appium常用的定位方法,下 ...

  8. appium 元素定位方法汇总

    以上图为例,要定位到右下角的 我的 ,并点击 # appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_e ...

  9. 基于appium的常用元素定位方法

    一.元素定位工具 app应用的元素使用的是控件定位,不同于web网页,web网页定位元素通常使用的是F12工具,那么在app当中我们则要借助其它的工具来辅助定位. 1.uiautomatorviewe ...

随机推荐

  1. 什么是 Serverless 应用引擎?优势有哪些?

    Serverless 应用引擎(Serverless App Engine,简称 SAE)是面向应用的 Serverless PaaS 平台,能够帮助 PaaS 层用户免运维 IaaS,按需使用,按量 ...

  2. Dockerfile安装jdk1.8 、部署java项目

    基础指令 FROM 基于哪个镜像MAINTAINER 用来写备注信息,例如作者.日期等.COPY 复制文件进入镜像(只能用相对路径,不能用绝对路径)ADD 复制文件进入镜像(可以用绝对路径,假如是压缩 ...

  3. thinkjs-定时任务

    thinkjs-定时任务 配置 原文文档 定时任务的配置文件为 src/config/crontab.js(多模块项目下配置文件为 src/common/config/crontab.js,也支持在每 ...

  4. 工具安装——linux下安装JDK1.8

    1.查看Linux环境自带JDK 使用命令:# rpm -qa|grep gcj 显示内容其中包含相应信息# java-x.x.x-gcj-compat-x.x.x.x-xxjpp# java-x.x ...

  5. MySQL中导出用户权限设置的脚本

    在对MySQL数据库进行迁移的时候,有时候也需要迁移源数据库内的用户与权限.对于这个迁移我们可以从mysql.user表来获取用户的相关权限来生成相应的SQL语句,然后在目标服务器上来执行生成的SQL ...

  6. 基于mini2440嵌入式Linux根文件系统制作(Initramfs和nfs两种跟文件系统)

    嵌入式系统由三部分构成: 1.bootoader---bootparameters---2.kernel 3.Root-filesysytem 一个内核可以挂载多个文件系统,但是有一个根文件系统所以叫 ...

  7. ntpd服务配置规则

    查看是否安装ntp服务 service ntpd status yum -y install ntpd* service ntpd startntpdate ntpd服务配置命令: crontab - ...

  8. Sql Server 常用日期格式

    SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 2004-09-12 11:06:08.17 ...

  9. bash配置相关

    登录方式 登录方式分为两种方式:

  10. java——解决"java.io.StreamCorruptedException: invalid stream header: xxx"

    这个错误是由序列化引起的,可能的原因以及解决方法: 1.kryo对于集合(比如 Map)的反序列化会失效,报这个错误,解决办法比较暴力,不用kryo了,直接用java原生方法. 2.使用Java原生方 ...