HtmlUnit ждать перенаправления - PullRequest
0 голосов
/ 17 марта 2020

У меня следующий сценарий, который мне нужно реализовать в HtmlUnit:


- я нажимаю кнопку
- Я перенаправлен на страницу www.page.pl/result
- Мне нужно подождать несколько секунд, а затем меня перенаправляют на www.anotherpage.pl/auth_code=qwe123

Проблема в том, что, как только я попадаю на страницу результатов, я не могу выйти из нее на следующую один. Там нет никаких ручных действий, мне просто нужно подождать, пока не произойдет перенаправление

Вот мой 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;
}

И как я пытаюсь выполнить sh это пробовал несколько способов, в том числе 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 голосов
/ 18 марта 2020

В случае, если у кого-то еще есть подобная проблема, я нашел решение

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

        }
    });
...