使用Xpath获取页面元素
以下Xpath路径都是获取下面地址的元素
可以在console 使用 $x() 执行xpath进行验证
下面列出了最有用的路径表达式:
表达式 |
描述 |
nodename |
选取此节点的所有子节点。 |
/ |
从根节点选取。 |
// |
从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. |
选取当前节点。 |
.. |
选取当前节点的父节点。 |
@ |
选取属性。 |
* |
匹配任何元素节点。 |
@* |
匹配任何属性节点。 |
node() |
匹配任何类型的节点。 |
| |
通过在路径表达式中使用“|”运算符,您可以选取若干个路径。 |
XPath 轴
轴可定义相对于当前节点的节点集。
轴名称 |
结果 |
ancestor |
选取当前节点的所有先辈(父、祖父等)。 |
ancestor-or-self |
选取当前节点的所有先辈(父、祖父等)以及当前节点本身。 |
child |
选取当前节点的所有子元素。 |
descendant |
选取当前节点的所有后代元素(子、孙等)。 |
descendant-or-self |
选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 |
following |
选取文档中当前节点的结束标签之后的所有节点。 |
parent |
选取当前节点的父节点。 |
preceding |
选取文档中当前节点的开始标签之前的所有节点。 |
preceding-sibling |
选取当前节点之前的所有同级节点。 |
self |
选取当前节点。 |
语法:
轴名称::节点测试[谓语]
实例
例子 |
结果 |
//div[@id='ls']/child::span |
选取所有id=ls的div节点的子元素 span 节点(div的子节点) |
//span/parent::div |
选取span的父节点是div的所有节点 |
//span/ancestor::tr |
选择span节点的所有 tr 先辈 |
//div[@id='ls']/descendant::a |
选取div节点的所有 a 后代 |
//div[@id='ls']/descendant-or-self::a |
选取div节点的所有 a 后代以及自己本身 |
//div[@id='ls']/ancestor-or-self::td |
选取div节点的所有 td 先辈以及自己本身 |
//span[@id='sf']/preceding-sibling::span |
选取当前节点之前的所有同级 span 节点 |
//span[@id='sf']/following-sibling::span |
选取当前节点之后的所有同级 span 节点 |
//span[@id='sf']/preceding::a |
选取当前span节点之前的所有 a 节点 |
//span[@id='sf']/following::a |
选取当前span节点之后的所有 a 节点 |
//span[@id='sf']/self::span |
选取当前节点span自己 |