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 回答正确。我会添加其他类似的替代方案:
这一个寻找所有 tr
与 th
包含 '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")
。
我有一个 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 回答正确。我会添加其他类似的替代方案:
这一个寻找所有 tr
与 th
包含 '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")
。