如何使用htmlunit获取显示下的元素:none div

时间:2012-06-27 19:22:11

标签: java xpath htmlunit

使用HtmlUnit,我应该如何获取隐藏div下的元素(style =“display:none”)?

在这种情况下,我试图获取表中显示的字段的值。第一个单元格是字段名称,第二个单元格是值。我正在使用“for”属性来查找关联值。

HTML:

<div style="display: none;" id="tab-doc-div">
<div class="tab-container" align="center">
    <table class="datatable">
        <tbody>
            <tr>
                <th rowspan="1" colspan="1">
                    &nbsp;<label for="doc.change.stat">
                    <font color="">*&nbsp;</font>Action</label>
                </th>
                <td colspan="2">
                    Data Change (DTA)
                </td>
            </tr>
        </tbody>
    </table>
</div>

Java / HtmlUnit Code我正在使用:

public static String getTextForProperty(HtmlPage page, String property) throws Exception {
    List<HtmlLabel> labels = (List<HtmlLabel>)page.getByXPath("//label[@for='" + property + "']");

    if (labels.isEmpty()) {
        return null;
    } else {
        return labels.get(0).getParentNode().getNextSibling().asText();
    }
}
String myValue = getTextForProperty(myPageObject, "doc.change.stat"); //returns null

2 个答案:

答案 0 :(得分:0)

我会使用getAttribute(String attributeName)http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/htmlunit/html/DomElement.html#getAttribute(java.lang.String

示例:

for (HtmlLabel label : labels) {
if (!label.getAttribute("for").isEmpty()) {
myValue = label.getAttribute("for");
}

答案 1 :(得分:0)

给出您的示例HTML文件以及对其他答案的评论:

  

在我的例子中,我希望获得数据变更(DTA)&#34;结果

这就是你所需要的:

HtmlTableCell td = page.<HtmlTableCell>
                     getFirstByXPath("//label[@for='doc.change.stat']/../../td");
System.out.println(td.getTextContent().trim());