【问题标题】:Choosing multiple elements by using a square bracket at the end vs enclosing the whole xpath in braces before sq brackets?通过在末尾使用方括号选择多个元素与在方括号之前将整个 xpath 括在大括号中?
【发布时间】:2019-07-13 22:32:57
【问题描述】:

我遇到过页面上有很多链接并且以下 xpath 适用于选择第一个链接的情况:

//标签[@...]/div/a[1]

还有其他情况,上面的xpath不起作用,那么我需要按照下面的方式来使用:

(//标签[@...]/div/a)[1]

当我在业务逻辑中为要选择哪些元素的代码编写更长的 xpath 时,当同一个 xpath 具有这两者的多种组合时,这种差异开始变得更加复杂。

用这两种方式编写 xpath 到底有什么区别?我已经看到,在任何特定情况下,其中一个有效,另一个无效。

【问题讨论】:

标签: xpath


【解决方案1】:

考虑这个示例 HTML:

<table>
  <tbody>
    <tr>
      <td>1.1</td>
      <td>1.2</td>
      <td>1.3</td>
    </tr>
    <tr>
      <td>2.1</td>
      <td>2.2</td>
      <td>2.3</td>
    </tr>
    <tr>
      <td>3.1</td>
      <td>3.2</td>
      <td>3.3</td>
    </tr>
  </tbody>
</table>

在这里,您可以使用//table/tbody/tr/td[index] 遍历仅第一行&lt;tr&gt;&lt;td&gt; 元素。 //table/tbody/tr 将返回第一个匹配项,即您的第一行,然后仅对第一行中的 &lt;td&gt; 元素进行索引。所以有效的索引是 1,2,3。

但如果您想遍历表中的所有&lt;td&gt; 值,则可以使用(//table/tbody/tr/td)[index]。这里索引适用于整个 xpath,对于所有 &lt;td&gt; 元素都是相同的。所以有效的索引是 1,2,3,..9。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2011-09-26
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多