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 |
选取当前节点。 |