xpath简介
- XPath 是一门在 XML 文档中查找信息的语言。
xpath定位场景
xpath定位调试方法
- 浏览器-elements,Ctrl+F搜索栏输入xpath表达式
- 浏览器-console,输入:$x("xpath表达式")
xpath基本语法
表达式 |
结果 |
示例 |
示例说明 |
/ |
从该节点的子元素选取 |
$x("/") |
整个页面 |
// |
从该节点的子孙元素选取 |
$x("//*") |
整个页面中的所有元素 |
* |
通配符 |
$x("/*") |
页面中的所有的子元素 |
nodename |
选取此节点的所有子节点 |
$x("//div") |
查找页面上面所有的div标签节点 |
. |
选取当前节点 |
$x('//*[@id="site-logo"]/.') |
查找当前节点,也可以不使用 |
.. |
选取当前节点的父节点 |
$x('//*[@id="site-logo"]/..') |
查找节点的父节点 |
@ |
选取属性 |
$x('//*[@id="site-logo"]') |
查找id属性为site-logo的节点 |
xpath高级语法
语法 |
表达式 |
举例 |
结果 |
n |
//标签名[n] |
//input[2] |
选取第二个input标签 |
last() |
//标签名[last()] |
//input[last()] |
选取最后一个input标签 |
postion() |
//标签名[postion()<4] |
input[postion()<4] |
选取前3个input元素 |
and |
//标签名[@属性名='属性值' and @属性名='属性值'] |
//input[@name='passward' and @pwd='123456'] |
选取属性name的值为passward并且属性pwd的值为123456的input标签 |
text() |
//标签名[text()=‘文本信息’] |
//*[text()='测试人'] |
选取所有文本信息为’测试人’的元素 |
contains() |
//标签名[contains(text(),‘文本信息’)] |
//*[contains(text(),'测试人')] |
选取所有文本信息包’测试人’的元素 |
XPath 轴(Axes)
轴可定义相对于当前节点的节点集。
轴名称 |
结果 |
ancestor |
选取当前节点的所有先辈(父、祖父等)。 |
ancestor-or-self |
选取当前节点的所有先辈(父、祖父等)以及当前节点本身。 |
attribute |
选取当前节点的所有属性。 |
child |
选取当前节点的所有子元素。 |
descendant |
选取当前节点的所有后代元素(子、孙等)。 |
descendant-or-self |
选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 |
following |
选取文档中当前节点的结束标签之后的所有节点。 |
following-sibling |
选取当前节点之后的所有兄弟节点 |
namespace |
选取当前节点的所有命名空间节点。 |
parent |
选取当前节点的父节点。 |
preceding |
选取文档中当前节点的开始标签之前的所有节点。 |
preceding-sibling |
选取当前节点之前的所有同级节点。 |
self |
选取当前节点。 |