一、符号:
- 管道符号
|
管道符号,可以选取若干路径
//a[@class='zcjd-xxgk'][1] | //a[@class='zcjd-xxgk'][2]
- 通配符号
*
通配符,可以匹配所以标签
//*[@id='search-input'] #//input[@id='search-input']
二、函数
local-name
获取节点标签名称
local-name(//input[@id='search-input'])#input
contains
模糊匹配文本
//a[contains(text(),'天津')]
text
,string
函数
主要是对文本内容进行取值或定位
//div[@class='list_page clearfix ng-scope']/a[text()='尾页']
可以和contains函数一起使用,
//div[@class='list_page clearfix ng-scope']/a[contains(text(),'页')]
//div[@class='list_page clearfix ng-scope']/a[contains(string(),'页')]
唯一的区别就是:
- string()是获取当前标签下所有的子节点的文本(多级节点可用);
- text()是获取当前标签下所有的文本;
last
函数
索引从
1
开始,last()
索引就是总长数
//div[@class='list_page clearfix ng-scope']/a[last()-1]#倒数第二个
三、逻辑
and
and表达式:比如下面这个例子,选取这个为
flag
代表翻页结束,一般网页都会有disabled
文本为下一页,有标志 两个都满足(只是举个例子还有很多用法)
//a[contains(string(),'下一页') and @class='disabled']
or
//input[@id='search-input' or @title="大家在搜 积分落户"]
or表达式:比如下面这个例子,定位搜索框可以通过
id
和title
属性去定位
两个满足一个即可
四、Axes(轴)、步
轴
- child 选取当前节点的所有子元素
- parent 选取当前节点的父节点
- descendant选取当前节点的所有后代元素(子、孙等)
- ancestor 选取当前节点的所有先辈(父、祖父等)
- descendant-or-self选取当前节点的所有后代元素(子、孙等)以及当前节点本身
- ancestor-or-self 选取当前节点的所有先辈(父、祖父等)以及当前节点本身
- preceding-sibling选取当前节点之前的所有同级节点
- following-sibling选取当前节点之后的所有同级节点
- preceding选取文档中当前节点的开始标签之前的所有节点
- following选取文档中当前节点的结束标签之后的所有节点
- self 选取当前节点
- attribute 选取当前节点的所有属性
- namespace选取当前节点的所有命名空间节点
步的语法:
轴名称::属性或者函数[谓语]
这些方法很实用,这里我只举一个例子
following-sibling
选取文档中当前节点的结束标签之后的所有节点,
比如说现在有翻页需求但是只显示页码,没有下一页或者其他标志
可以使用这个选取当前页的后面一页
//*[@id="pagination"]/li[@class="active"]/following-sibling::li[1]/a