单击执行javascript

时间:2018-10-16 17:54:24

标签: java htmlunit

我正在尝试使用HtmlUnit自动登录到一个网站,即nike.com。我面临的问题是登录名不是由单独的页面处理的,而是一旦用户单击站点上的登录按钮,它就会出现在同一站点上。查找该按钮可以正常工作,但是在单击“登录”按钮后,我似乎无法获得加载了登录表单的网站的更新版本。以下代码永远无法找到登录表单。我试图同时使用AjaxController和等待javascript,但都无济于事。

任何帮助将不胜感激。

public void nikeLogin() {
    try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        HtmlPage page = webClient.getPage("https://nike.com/de/launch");
        HtmlElement button = page.getFirstByXPath("/html/body/div[2]/div/div/div[1]/div/header/div[1]/section/ul/li[1]/button");
        HtmlPage page2 = button.click();
        webClient.waitForBackgroundJavaScript(1000);
        List textFields = page2.getForms();
        if(textFields.isEmpty()) {
            System.out.println("No Forms found");
        } else {
            System.out.println("Login form found");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

0 个答案:

没有答案