Xpath定位总结
先贴上练习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定位总结的更多相关文章
- java selenium (六) XPath 定位
xpath 的定位方法, 非常强大. 使用这种方法几乎可以定位到页面上的任意元素. 阅读目录 什么是xpath xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面, ...
- 常用的CSS定位,XPath定位和JPath定位
CSS定位 举例 描述 div#menu id为menu的div元素 div.action-btn.ok-btn class为action-btn和ok-btn的div元素 table#emailLi ...
- selenium之xpath定位和input文本
selenium之xpath定位和input文本 xpath简单定位: 打开浏览器的F12 在自己需要定位的元素的那里右键 选择copy->xpath selenium获取input下的文本: ...
- 5.5.8 XPath定位
1.什么是XPath XPath定位方式是自动化测试定位技术中的必杀技,几乎可以解决所有的定位难题.它是XML Path语言的缩写,主要用于在XML 文档中选择文档中的节点.基于XML树状文档结构,X ...
- selenium+python自动化之xpath定位
在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. 什么是 ...
- Xpath定位大全
selenium使用Xpath定位之完整篇 其中有一片文章提到了xpath元素定位,但是该文章中有些并不能适应一些特殊与个性化的场景.在文本中提供xpath元素的定位终极篇,你一定能在这里找到你需 ...
- appium的xpath定位
做自动化,元素定位是我们遇到的第一个困难.总是会有各种各样的问题,导致我们定位不到元素.前面一篇博客也写了元素定位的几种方法,今天主要分享一下xpath的定位方法. 这里我们仍然拿计算器举例. 比如我 ...
- Selenium-Python学习——通过XPath定位元素
用Xpath定位元素的方法总是记不住,经常要翻出各种文档链接参考,干脆把需要用到的内容整到这个笔记中方便查找. Xpath是在XML文档中定位节点的语言.使用 XPath 的主要原因之一是当想要查找的 ...
- Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素
在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识. 最简单的方式,是通过id 或name来描述元素定位信息,如 click button id=l ...
- UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)
Selenium下的Webdriver工具支持FireFox(geckodriver). IE(InternetExplorerDriver).Chrome(ChromeDriver). Opera( ...
随机推荐
- linux 下 tomcat 之 配置静态资源路径
1.找到配置文件 找到tomcat\conf\server.xml 2.找到Host 3. 添加 Context <Host name="localhost" appBase ...
- 才一年,H5的发展就成这样了......
关于H5的发展,分享几个最近看到的惊人数据和新闻: 1.截至2015,有80%的App将全部或部分基于HTML5.这意味着大部分App的内容都将是以网页的形式呈现,典型的例子包括微信.Facebook ...
- HDU-1102-Constructing Roads(并查集)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1102 这题大意就不讲了, 这题很容易,不过我做的很不爽,一个下午,一直WA,后来才发现数组开小了 只开 ...
- JAVA中获取当前运行的类名,方法名,行数
JAVA中获取当前运行的类名,方法名,行数 public static String getTraceInfo(){ StringBuffer sb = new StringBuffer(); Sta ...
- hadoop-1.x的运行实例
我的环境是hadoop-0.20.2,eclipse:SDK-3.3.2, 源数据为: Apr 23 11:49:54 hostapd: wlan0: STA 14:7d:c5:9e:fb:84 Ap ...
- Java 的String类
String类 1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s ...
- Nginx之RTMP
1. RTMP协议介绍 RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频.视频和数据传输开发的私有 ...
- log4j.appender.stdout.layout.ConversionPattern
http://501565246-qq-com.iteye.com/blog/1991881 http://wenku.baidu.com/link?url=e4Z9v9CY_gwRxHrggzHXx ...
- 统计SQLSERVER表行数,以及每天数据变化的行数
此sql对监控系统很有帮助,知道哪些表压力大,每天的数量级大概多少等信息. 得到这些信息就可以做相应的策略来进行系统优化. create table tmp( name varchar(50), ro ...
- HoloLens开发手记 - 构建2D应用 Building 2D apps
HoloLens可以让我们在真实世界中看到全息图像内容.但是它本质上还是一台Windows 10设备,这意味着HoloLens可以以2D应用形式运行Windows Store里的大部分UWP应用. 目 ...