xpath元素定位语法
举个栗子
--------------------------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<store1>
<book>
<title lang="eng">Harry Potter1</title>
<price>10</price>
</book>
</store1>
<shool>
<store1>
<book>
<title></title>
<title id="2"></title>
<title lang="eng">
Harry Potter2
</title>
<title lang="cn">哈利波特2</title>
<price>20</price>
</book>
</store1>
</school>
<book>
<title lang="eng">Harry Potter3</title>
<price>30</price>
</book>
<book>
<title lang="eng">Harry Potter4</title>
<price>40</price>
</book>
</bookstore>
-------------------------------------------------------------------------------------------
定义:
节点、属性、内容之后的关系,例如:
<title lang="cn">哈利波特2</title>
a.title是节点(元素);
b.lang是titile节点的属性;
c."cn"是lang的属性值;
d.“哈利波特2”是title节点的内容;
综上:一个节点包含了属性和内容两部分,属性和内容可以同时为空。
1、单斜线“/”:如果以“/”开始,那么该路径表示到一个节点的绝对路径,从根节点开始选取。 如:
选中bookstore根节点: /bookstore
选中bookstore下的book子节点: /bookstore/book
选中store1下的book子节点: /bookstore/store1/book
2、双斜线“//”:如果以“//”开始,表示选中文档中所有满足“//”之后规则的节点(无论层级关系)。如:
选中所有book子节点(包括bookstore,store1和school/store1下的book节点): //book
选中所有store1下的book子节点(包括store1和school/store1下的book节点): //store1/book
3、星号“*”:表示选择所有由“*”之前的路径所定位的所有节点。如:
选中bookstore下所有子节点:/bookstore/*
选中文档中所有节点: //*
4、@:使用前缀@来指定节点的属性。如:
选中所有取名为lang的属性://@lang
5、方括号"[]":进一步限定节点,用来查找某个特定的节点或者包含某个指定的值的节点。如:
选中storebook下第二个book节点: /storebook/book[2] 或者 /storebook/book[last()]
选中storebook下前两个book节点: /storebook/book[position()<3]
选中有id属性的title节点://title[@id]
选中属性不为空的title节点: //title[@*]
选中属性为空的title节点: //title[not(@*)]
6、属性值作为节点的筛选条件。如:
选中属性值:id为2的title节点://title[@id='2']
选中属性值:lang为cn的title节点: //title[@lang='cn']
7、分隔符“|”:将多个路径合并在一起(可以合并的路径数目没有限制)。如:
选择所有的title节点和price节点://title|//price
参考文献:http://www.w3school.com.cn/xpath/xpath_syntax.asp
xpath元素定位语法的更多相关文章
- css选择器用法,使用css定位元素,css和xpath元素定位的区别
css定位元素 1.什么是css? CSS(Cascading Style Sheets)层叠样式表,是一种语言,用来描述html或者xml的显示样式.在css语言中有css选择器,在selenium ...
- python中通过selenium简单操作及xpath元素定位&轴定位
浏览器的简单操作 # 导入webdriver模块 # 创建driver对象,指定Chrome浏览器 driver = webdriver.Chrome() # 窗口最大化 driver.maximiz ...
- KatalonRecorder系列(一):基本使用+XPath元素定位
一.简介 Katalon Recorder是基于selenium的浏览器插件,支持火狐和chrome.可以录制web上的操作并回放,还能导入导出脚本. 二.安装 可在谷歌商店或者火狐附件组件中搜索并选 ...
- Selenium+Java(四)Selenium Xpath元素定位
前言 关于Selenium元素定位,这是最后一篇博客. Xpath定位可以实现的功能 Selenium+Java(三)Selenium元素定位中讲的定位方式也可以实现,具体要用那种定位方式要根据自己的 ...
- xpath元素定位方法
XPath 使用路径表达式来选取 XML 文档中的节点或者节点集.这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似.XPath 含有超过 100 个内建的函数.这些函数用于字符串值.数值 ...
- webdriervAPI(XPath元素定位)
from selenium import webdriver driver = webdriver.Chorme() driver.get("http://www.baidu.co ...
- appium xpath元素定位
1.id定位 写法:driver.find_element_by_id("这里是resource-id") 2.name定位 name定位就是通过UI Automator工具查看的 ...
- 用XPath精确定位节点元素&selenium使用Xpath定位之完整篇
在利用XSL进行转换的过程中,匹配的概念非常重要.在模板声明语句 xsl:template match = ""和模板应用语句xsl:apply-templates select ...
- 【WEB自动化】【第一节】【Xpath和CSS元素定位】
目前自动化测试开始投入WEB测试,使用RF及其selenium库,模拟对WEB页面进行操作,此过程中首先面对的问题就是对WEB页面元素的定位,几乎所有的关键字都需要传入特定的WEB页面元素,因此掌握常 ...
随机推荐
- maven中心仓库OSSRH使用简介
目录 简介 为什么使用中心仓库 发布到中心仓库前的准备工作 使用OSSRH 使用Sonatype创建ticket 中央仓库中的组件要求 提供Javadoc 和源代码 使用GPG/PGP给文件签名 Me ...
- Python转义字符中'\'的个数问题
Python转义字符中''的个数问题 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r' '或者r" "表示''或" "内部 ...
- Asp.Net Core 5 REST API 使用 JWT 身份验证 - Step by Step
翻译自 Mohamad Lawand 2021年1月22日的文章 <Asp Net Core 5 Rest API Authentication with JWT Step by Step> ...
- MyBatis笔记(七)
1. 简介 什么是缓存? 存在内存中的临时数据 将用户经常查询的数据存放在缓存(内存)中,用户取查询就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问 ...
- 下载kaggle数据集的小妙招
kaggle是很多数据分析和机器学习初学者非常喜爱的数据科学竞赛平台. 这个平台上有很多接近现实业务场景的数据集,非常适合练手. 今天向大家推荐一个下载kaggle数据集的小工具--kaggleAPI ...
- 后端Spring Boot+前端Android交互+MySQL增删查改(Java+Kotlin实现)
1 前言&概述 这篇文章是基于这篇文章的更新,主要是更新了一些技术栈以及开发工具的版本,还有修复了一些Bug. 本文是SpringBoot+Android+MySQL的增删查改的简单实现,用到 ...
- k8s新手必看
转载自https://juejin.im/post/6844903840139968520 Kubernetes零基础快速入门!初学者必看! 起源 Kubernetes 源自于 google 内部的服 ...
- hdfs文件系统挂载
简要说明: 使用fuse将hdfs文件系统挂载远程服务器上,像使用nfs和glusterfs那样可以挂载共享存储 fuse安装 fuse可以编译安装或者通过CDH或ambari源yum安装 此处使用a ...
- 无所不能的PowerMock,mock私有方法,静态方法,测试私有方法,final类
1.为什么要用mock 我的一本书的解释: (1)创建所需的DB数据可能需要很长时间,如:调用别的接口,模拟很多数据 (2)调用第三方API接口,测试很慢, (3)编写满足所有外部依赖的测试可能很复杂 ...
- 【并发编程】线程池是否需要手动关闭吗?以Hutool中的线程池为例
Hutool工具包中使用线程池的API是: ThreadUtil.execute() /** * 直接在公共线程池中执行线程 * * @param runnable 可运行对象 */ public s ...