使用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">
<label for="doc.change.stat">
<font color="">* </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
答案 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());