Как заставить HtmlUnit сохранить страницу? - PullRequest
0 голосов
/ 07 мая 2010

Я использую HtmlUnit, чтобы щелкнуть по HtmlElement, который запускает действие Javascript:

currentPage = ((HtmlElement) currentPage.getByXPath("//*[contains(@onclick, 'check();')]").get(0)).click();

Элемент:

<a href="#" onclick="check(); return false;">

Возвращенная страница очень похожа на страницу, содержащую этот элемент: тот же URL, в основном тот же HTML, но есть небольшие отличия в HTML и HtmlUnit не сохраняет новую страницу. Я использую HttpAnalyzer для анализа трафика и вижу, что Webclient правильно обрабатывает JS и отправляет правильный запрос. Ответ также правильный, но когда я выкидываю содержимое currentPage в файл, я вижу, что реальная страница не изменилась. Как я могу это исправить?

1 Ответ

0 голосов
/ 01 ноября 2011

У меня была такая же проблема. В моем случае это было:

<div id="loginButton" class="buttonOuter" onclick="this.childNodes[1].click();">
<div class="buttonInner">
<a href="#">Login</a>
</div>
<input class="loginHiddenButton" type="submit" onclick="submit_proc(false,'')">
</div>

Я решаю это так:

HtmlPage page1 = webClient.getPage("myURI");
HtmlElement htmlElement = (HtmlElement) page1.getByXPath("loginHiddenButtonXPATH").get(0);

webClient.setJavaScriptEnabled(false);
page1 = htmlElement.click();
webClient.setJavaScriptEnabled(true);
...