0

我在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>
4

2 回答 2

0

尝试

//*[text() = \"SOMETHING\"]/../following-sibling::*[1]/*[1]
于 2014-07-23T11:14:54.417 回答
0

以下 XPath 应该可以工作:

//tr[td/*[contains(text(), "SOMETHING")]]/following-sibling::tr/td[@valign ="top"]

它将选择一个<tr>元素,该元素确实有一个带有所需文本的孙子元素。然后它将选择所有后续兄弟并选择下一个元素。请注意,我<td>根据 valign 属性值选择了正确的元素 basec,您可能不想这样做,而是使用位置,即td[2]

于 2014-07-23T13:31:04.887 回答