问题描述
我在Java中使用Htmlunit.我需要通过text()找到一个元素,并且我需要这个元素的第二个表亲(我认为).
I use Htmlunit in java. I need to find an element by text(), and i need the second cousin of this element (i think).
我尝试过:
HtmlElement element = page.getFirstByXPath("//*[text() = \"SOMETHING\"]/parent/following-sibling/child");
System.out.println(element.asText()); // it's null
更新:html源页面:
Update:The html source page:
<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>
推荐答案
以下XPath应该有效:
The following XPath should work:
//tr[td/*[contains(text(), "SOMETHING")]]/following-sibling::tr/td[@valign ="top"]
它将选择一个<tr>
元素,该元素确实具有带有所需文本的孙子元素.然后它将选择所有后续的同级并选择下一个元素.请注意,我基于valign属性值选择了正确的<td>
元素c,您可能不想这样做,而是使用位置,即td[2]
It will select a <tr>
element, which does have a grandchild with the required text. Then it will select all following siblings and select the next element. Please note that I selected the correct <td>
element basec on the valign attribute value, you might not want to do that and instead use the position, i.e. td[2]
这篇关于如何通过xpath text()和该元素的第二个表亲找到一个元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!