首页 > 解决方案 > 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

标签: javahtmlunit

解决方案


如果其他人有类似的问题,我找到了解决方案

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

        }
    });

推荐阅读