1

HtmlUnitを使用して、非表示のdiv(style = "display:none")の下にある要素を取得するにはどうすればよいですか?

この場合、テーブルに表示されているフィールドの値を取得しようとしています。最初のセルはフィールド名で、2番目のセルは値です。「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コード:

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
4

2 に答える 2

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");
}
于 2012-06-28T10:46:47.553 に答える
0

サンプルのHTMLファイルと他の回答に対するコメントを考えてみましょう。

私の例では、結果として「データ変更(DTA)」を取得したいと思います

必要なのはこれだけです。

HtmlTableCell td = page.<HtmlTableCell>
                     getFirstByXPath("//label[@for='doc.change.stat']/../../td");
System.out.println(td.getTextContent().trim());
于 2012-06-28T16:19:03.813 に答える