包含属性且其父级父级包含另一个属性的XPath元素

时间:2010-02-02 01:45:04

标签: xpath element parent predicate axes

这是我在这里的第一篇文章,因为我看到很多很棒的答案,我想我会试一试。

我正在尝试使用XPath来获取HTML文档中的特定元素。以下是基于Google网页的示例:

<html>
  <head>
    <title>XPath Test</title>
  </head>
  <body>
    <form name='f'>
      <table>
        <tbody>
          <tr>
            <td>
              <input name='q' type="text" />
            </td>
          </tr>
        </tbody>
      </table>
    </form>
  </body>
</html>

使用上面的示例(为了寻求帮助而简化),我希望能够找到名称为'q'的输入元素,以及谁拥有名称为5父母的祖先= 'F'。

例如,如果我在S.W.A.T的语法中这样做。这是一个位于http://ulti-swat.wikispaces.com的开源Web自动化测试库,语法如下:

| AssertElementExists |表达式|名= Q; parentElement.parentElement.parentElement.parentElement.parentElement.name = F |输入|

我刚开始学习XPath,并试图了解如何将谓词与轴组合。是否可以使用XPath执行此类表达式?如果有的话,知识渊博的人请帮忙吗?

1 个答案:

答案 0 :(得分:13)

你可以这样做:

//input[@name='q' and ancestor-or-self::*[@name='f']]
// -- input element whose name='q' and who has an ancestor with the name='f'

//input[@name='q' and ../../../../../../*[@name='f']]
// -- input element whose name='q' and who is 5 parents up with the name='f'

您可以使用此桌面XPath Visualizer来测试XPath表达式。一个basic tutorial can be found here