HtmlUnit等待重定向

时间:2020-03-17 09:54:12

标签: java htmlunit

我需要在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

1 个答案:

答案 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) {

        }
    });