XPath 中 //、.// 和 ..// 之间的区别?

Difference between //, .//, and ..// in XPath?

任何人都可以帮助解决以下 XPath 之间的区别,并帮助我了解何时使用其中的哪一个。我发现它们三个都可以工作,但不确定何时使用它们。

  1. Get Element Text ${output} //priority

  2. Get Element Text ${output} .//vrrp-group/name

  3. Get Element Text ${output} ..//track/priority-hold-time

一般 XPath 中 //、.// 和 ..// 之间的区别

// 在后代或自身节点中选择(沿着 descendant-or-self axis)。 /descendant-or-self::node()/.

的缩写
  1. //从根节点开始,从而覆盖整个文档。
  2. .//context node.
  3. 开始
  4. ..// 从上下文节点的父节点开始。

在你的具体情况下

  1. //priority 选择文档中的所有 priority 个元素。
  2. .//vrrp-group/name 在上下文节点下选择具有 vrrp-group 父元素的所有 name 元素。
  3. ..//track/priority-hold-time 在上下文节点的父项下选择具有 track 父项的所有 priority-hold-time 元素。

Robotframework 笔记:

Get Element Text Robotframework XML 库命令的上下文中,XPath 必须相对于 source 节点(${output} in你的情况)。 //priority 等绝对 XPath 在那里是不允许的。

另见