我需要在HtmlUnit
中实现以下方案:
-我点击按钮
-我被重定向到www.page.pl/result页面
-我需要等待几秒钟,然后重定向到www.anotherpage.pl/auth_code=qwe123
问题在于,一旦我进入/ result页面,就无法摆脱它进入下一个页面。那里没有手动操作,我只需要等待重定向发生
这是我的WebClient
private WebClient initWebClient() {
WebClient webClient = new WebClient();
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
return webClient;
}
我要如何实现这一目标,我尝试了几种方法,包括Thread.sleep()
...
HtmlPage page = webClient.getPage(url);
page.getForms().get(0).getButtonByName("submit").click(); // Redirects me to /result
webClient.waitForBackgroundJavaScript(5000);
webClient.waitForBackgroundJavaScriptStartingBefore(5000);
Thread.sleep(5000);
page.refresh(); //I'm still on /result, while I need to be on completely new page by now
答案 0 :(得分:1)
万一其他人有类似的问题,我找到了解决方法
webClient.addWebWindowListener(new WebWindowListener() {
@Override
public void webWindowOpened(WebWindowEvent webWindowEvent) {
}
@Override
public void webWindowContentChanged(WebWindowEvent webWindowEvent) {
if (webWindowEvent.getNewPage() != null) {
// do what you need to do with webWindowEvent.getNewPage().getUrl();
}
}
@Override
public void webWindowClosed(WebWindowEvent webWindowEvent) {
}
});