如何通过xpath text()和该元素的第二个表兄找到一个元素?

时间:2014-07-23 11:09:30

标签: text xpath parent htmlunit nextsibling

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

2 个答案:

答案 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]