如何解释XPath?

时间:2018-06-25 21:09:07

标签: selenium xpath

有人可以告诉我是否正确解释了以下XPath:

 driver.find_elements_by_xpath ("//span[contains(., 'Cardiovascular')]/parent::*/parent::*/descendant-or-self::node()/a/span"
  1. 在文档中的任何位置查找文本中包含“心血管”的跨度标签
  2. 一旦找到,请检查其直接父级,所有后代或文档或节点本身中任何位置的其他父级
  3. 然后,立即转到标签
  4. 然后,转到立即跨度标记?

更具体地说,有人可以告诉我/ parent :: * / parent是什么意思吗? / parent :: / descendant-or-self :: node()是什么意思?为什么我们在那里有node()函数

2 个答案:

答案 0 :(得分:1)

差不多。

寻找{“ {1}}标签,它们的文本中包含“心血管”标签;找到他们的祖父母元素;然后在这些祖父母元素中,找到所有具有Foo元素作为其父元素的span元素。

答案 1 :(得分:1)

Michael Kay已经解释了XPath选择的内容。这是您其他问题的答案:

  

更具体地说,有人可以告诉我/parent::*/parent [sic]是什么意思吗?

  • parent::*意味着选择上下文节点的父元素(*与任何名称的元素匹配)。
  • parent::*/parent::*意味着选择上下文节点的祖父母元素。
  

/parent::/descendant-or-self::node() [原文如此]是什么意思

     

为什么在那里有node()作为函数

  • 请参见上文以了解parent::*的含义(并请注意,您忘记了*)。
  • descendant-or-self::node().//node()相同;它选择上下文节点及其所有后代。这里,node()不是函数,而是node test。如果是element(),它将只选择元素; comment(),仅注释;等