xpath的基础实例
本文分为路径表达式和常用函数两部分,整理自火车浏览器官方教程-火车浏览器之Xpath讲解。
小提示:可以使用火狐浏览器。我用的是火狐浏览器+firebug+firepath来进行调试,调试界面是这样的:

下面是具体的内容:
路径表达式:
/html/head/meta[@name="theme-color"]
上面这个表达式按照网页的绝对路径找到meta,该路径下有多个meta,所以中括号中指定了要找的是name为theme-color的meta
但是写绝对路径太繁琐,所以可以简写成相对路径如下
//meta[@name="theme-color"]
上面这条表达式,只需要在括号中写入一个独一无二的标志性name即可通过相对路径找到
一般而言,因为绝对路径容易发生变化,xpath表达式尽可能简短,尽可能使用相对路径
小结:
//后面写的是元素的名称
[]中写的是条件
[]中加了@表示属性名称,没有加@表示元素名称
@为属性名称
==========分割线==========
常用函数:
and:条件与(下面两种写法都可以)
//div[@id="swfEveryCookieWrap" and @data-for="result"]
//div[@id="swfEveryCookieWrap"][@data-for="result"]
表示通过相对路径找到id为swfEveryCookieWrap并且data-for属性值为result的div
|:条件或
//div[@id="swfEveryCookieWrap"] | //div[@data-for="result"]
表示通过相对路径找到id为swfEverycookieWrap或者data-for属性值为result的div
position:正向定位
//div[@id="content_left"]/div[position()>2]
找到id为content_left下的子元素div位置>2的元素(position的值是从1开始的)
last:反向定位
//div[@id="content_left"]/div[last()]
找到id为content_left下子元素div位置为最后一个的元素
//div[@id="content_left"]/div[last()-1]
找到id为content_left下子元素div位置为最后一个前一个(也就是倒数第二个)的元素
正向定位和反向定位结合
//div[@id="content_left"]/div[position()>4 and position()<last()-1]
找到id为content_left下子元素div位置大于4并且位置小于倒数第二的元素(也就是从第五个到倒数第三个的元素)
contains:模糊查询
//div[@id="content_left"]/div[contains(@data-click,'{"rsv_bdr":"0","rsv_cd":"pt:40520')]
找到id为content_left下子元素div内的data-click属性中包含{"rsv_bdr":"0","rsv_cd":"pt:40520的所有元素
xpath的基础实例的更多相关文章
- APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例
前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- Windows 8实例教程系列 - 数据绑定基础实例
原文:Windows 8实例教程系列 - 数据绑定基础实例 数据绑定是WPF,Silverlight以及Windows Phone应用开发中最为常用的开发技术,在基于XAML的Windows Stor ...
- TypeScript进阶开发——ThreeJs基础实例,从入坑到入门
前言 我们前面使用的是自己编写的ts,以及自己手动引入的jquery,由于第三方库采用的是直接引入js,没有d.ts声明文件,开发起来很累,所以一般情况下我们使用npm引入第三方的库,本文记录使用np ...
- javascript订阅模式浅析和基础实例
前言 最近在开发redux或者vux的时候,状态管理当中的createStore,以及我们在组件中调用的dispatch传递消息给状态管理中心,去处理一些操作的时候,有些类似我们常见到订阅模式 于是写 ...
- Java线程基础实例
概述 Java线程是一个在实战开发中经常使用的基础功能,而在Java中线程相关的类在java.lang和java.util.concurrent里 Thread package thread.base ...
- Quartz基础+实例
1. 介绍 Quartz体系结构: 明白Quartz怎么用,首先要了解Scheduler(调度器).Job(任务)和Trigger(触发器)这3个核心的概念. 1. Job: 是一个接口,只定义一个方 ...
- 快速掌握Ajax-Ajax基础实例(Ajax返回Json在Java中的实现)
(转)实例二:Ajax返回Json在Java中的实现 转自http://www.cnblogs.com/lsnproj/archive/2012/02/09/2341524.html#2995114 ...
- Vue.js教程--基础(实例 模版语法template computed, watch v-if, v-show v-for, 一个组件的v-for.)
官网:https://cn.vuejs.org/v2/guide/index.html Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统. 视频教程:https: ...
随机推荐
- [LOJ2553]暴力写挂
锟题x2 以下用$a\rightarrow b$表示端点为$a,b$的链 把式子写成$(h_1(x)+h_1(y)-h_1(lca))-h_2(lca')$,第一部分就是$x\rightarrow r ...
- 【最大权森林/Kruskal】POJ3723-Conscription
[题目大意] 招募m+n个人每人需要花费$10000,给出一些关系,征募某个人的费用是原价-已招募人中和他亲密值的最大值,求最小费用. [思路] 人与人之间的亲密值越大,花费越少,即求出最大权森林,可 ...
- 升级到XCode6后,iOS8里设置tableview的setSeparatorInset:UIEdgeInsetsZero不起作用的解决办法
我们在使用tableview时会发现分割线的左边会短一些,通常可以使用 setSeparatorInset:UIEdgeInsetsZero 来解决.但是升级到XCode6之后,在iOS8里发现没有效 ...
- (转)JS中的对象
1.对象 要有对象, 就先要有创建对象的方法. 在C++/Java等语言, 这个方法就是实例化XXX类的一个实例xxx.而在JavaScript的世界里实际没有类的东西, 当然仍然可以用"类 ...
- Microsoft SQL Server 2012 Internals
http://blog.csdn.net/column/details/learnsqlserver2012.html
- python笔记4-遍历文件夹目录os.walk()
前言 如何遍历查找出某个文件夹内所有的子文件呢?并且找出某个后缀的所有文件 walk功能简介 1.os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 2.walk()方 ...
- easyui时间控件设置为可清空——jquery-easyui-1.3.3(这个版本还没有buttons,网上的好多博文都是1.3.5之后的版本)
效果图: 更改的源码jquery.easyui.min.js 11358行: var _858=$("<div class=\"datebox-button\"&g ...
- [Android Pro] 关于BitmapFactory.decodeStream(is)方法无法正常解码为Bitmap对象的解决方法
在android sdk 1.6版本API帮助文档中,其中关于BitmapFactory.decodeFactory.decodeStream(InputStream is)的帮助文档是这么说明的: ...
- java反序列号漏洞分析资料汇总,待研究
https://blog.chaitin.cn/2015-11-11_java_unserialize_rce/ http://blog.nsfocus.net/?s=fastjson http:// ...
- Linux编程中的坑——C++中exit和return的区别
今天遇到一个坑,折腾了一天才把这个坑填上,情况是这样的: 写了段代码,在main()函数中创建一个分离线程,结果这个线程什么都没干就直接挂掉了,代码长这样: int main() { 创建一个分离线程 ...