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

gta*_*rga 6 xpath element predicate axes parent

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

我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

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

例如,如果我在SWAT的语法中执行此操作,SWAT是位于http://ulti-swat.wikispaces.com的开源Web自动化测试库,则语法如下:

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

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

Rub*_*ias 13

你可以这样做:

//input[@name='q' and ancestor-or-self::*[@name='f']]
// -- input element whose name='q' and who has an ancestor with the name='f'
Run Code Online (Sandbox Code Playgroud)

要么

//input[@name='q' and ../../../../../../*[@name='f']]
// -- input element whose name='q' and who is 5 parents up with the name='f'
Run Code Online (Sandbox Code Playgroud)

您可以使用此桌面XPath Visualizer来测试XPath表达式.一个基本的教程可以在这里找到.