class 名称未知时如何获取元素?

How to get elements when class name is unknown?

我有一个 HTML 文档,其中有一个 table 包含可能有或可能没有 class 的行,例如:

<tr class="">
  <th>Name</th>
  <td class="row-text">Myname</td>
</tr>

在上面的示例中,该行没有 class。但是我需要获取列值(即 MyName)。此类行中唯一的唯一值是 header 标记。

有没有办法使用 XPath 通过 header 值获取正确的行?

是的,您可以使用 following-sibling axis:

//th[. = 'Name']/following-sibling::td

或者,通过 tr 父元素:

//tr[th = 'Name']/td

@alecxe 回答正确。我会添加其他类似的替代方案:

这一个寻找所有 trth 包含 'Name' 作为 substring (如果有多个带有文本 'Name' 作为其内容的一部分的元素,它们也将被选中);并选择 tr

中的 td
//tr[contains(th, 'Name')]/td

另一个类似,但只为您提供 完全匹配 的元素,并且还负责 规范化 空格,这很有用,因为有时无法找到完全匹配,因为文本之前可能有空格或换行符阻止完全匹配。它发现 th 移动到父级 (..),最后移动到 td

//th[normalize-space(text()) = 'Name']/../td

请记住,您可以在 Chrome 和 Firefox 控制台中使用 $x("some/xpath") 功能来检查 xpath;类似于 CSS 选择器的 $("some css")