我目前正在尝试使用HtmlUnit从website的下拉列表中选择一个新值,然后在同一页面的div中访问新加载的内容。执行Java代码时没有任何问题,但是新选择后页面不会更新。请在下面找到我的Java代码和下拉菜单的HTML。有想法吗?
try (final WebClient webClient = new WebClient()) {
HtmlPage page1 = webClient.getPage(asinLink);
//Select the new value of the dropdown
HtmlSelect select = (HtmlSelect) page1.getElementById("cm-cr-sort-dropdown");
HtmlOption option = select.getOptionByValue("recent");
page1 = select.setSelectedAttribute(option, true);
//access div containing newly loaded content
DomElement reviewListDiv = page1.getElementById("cm-cr-dp-review-list");
if(reviewListDiv != null) {
Iterable<DomElement> reviewDivs = reviewListDiv.getByXPath("//div[@class='a-expander-content a-expander-partial-collapse-content']");
for (DomNode reviewDiv : reviewDivs) {
//work with newly loaded list content
}
}else {
// handle error if div not found
}
}
catch (Exception e) {
// handle exception
}
<div id="cm-cr-dp-review-sort-type" data-reftag="cm_cr_dp_d_fltrs_srt" class="a-section a-spacing-small">
<span class="a-declarative" data-action="reviews:filter-action:change" data-reviews:filter-action:change="{"filterType":"sortOrder"}">
<span class="a-dropdown-container">
<select name="" autocomplete="off" id="cm-cr-sort-dropdown" tabindex="-1" class="a-native-dropdown">
<option value="helpful" data-a-css-class="cm-cr-sort-order-option" selected="">Spitzenrezensionen</option>
<option value="recent" data-a-css-class="cm-cr-sort-order-option">Neueste zuerst</option>
</select>
<span tabindex="-1" data-a-class="cm-cr-dp-filter-dropdown" class="a-button a-button-dropdown a-button-small cm-cr-dp-filter-dropdown" id="a-autoid-22" style="min-width: 0%;">
<span class="a-button-inner">
<span class="a-button-text a-declarative" data-action="a-dropdown-button" role="button" tabindex="0" aria-hidden="true" id="a-autoid-22-announce">
<span class="a-dropdown-prompt">Spitzenrezensionen</span>
</span>
<i class="a-icon a-icon-dropdown"></i>
</span>
</span>
</span>
</span>
</div>