我在java中使用Htmlunit。我需要通过text()找到一个元素,我需要这个元素的第二个表兄弟(我想)。
我试过了:
HtmlElement element = page.getFirstByXPath("//*[text() = \"SOMETHING\"]/parent/following-sibling/child");
System.out.println(element.asText()); // it's null
更新: html源页面:
<tr>
<script>
_l('its not important')
</script>
<td valign="top">
<font class="its not important">
</td>
<td valign="top">
<font class="its not important">
SOMETHING
<script>
_l('its not important')
</script>
</font>
<script>
_l('its not important')
</script>
</td>
</tr>
<tr>
<td></td>
<td valign="top">
THE INFORMATION I NEED
</td>
</tr>
答案 0 :(得分:0)
试
//*[text() = \"SOMETHING\"]/../following-sibling::*[1]/*[1]
答案 1 :(得分:0)
以下XPath应该有效:
//tr[td/*[contains(text(), "SOMETHING")]]/following-sibling::tr/td[@valign ="top"]
它将选择一个<tr>
元素,它具有带有所需文本的孙子。然后它将选择所有以下兄弟并选择下一个元素。请注意,我在valign属性值上选择了正确的<td>
元素basec,您可能不想这样做而是使用该位置,即td[2]