单击使用htmlunit的javascript锚点似乎不起作用

我正在使用htmlunit自动浏览网站.
这是问题所在:

我想点击一个锚点,以显示给定表格的新页面.

这是锚点:

<a href="javascript:__doPostBack('GridView1','Page$7')">7</a>

这是我的代码:

final HtmlAnchor a = page2.getAnchorByText("7");
HtmlPage page3 = a.click();
System.out.println(page2.getWebResponse().getContentAsString())
System.out.println(page3.getWebResponse().getContentAsString());

我没有任何错误消息.当我比较我的打印时,它们是相同的,但它们不应该是,因为我只是点击一个锚点.首先打印输出应该显示表格的某个页面,第二个打印输出另一个页面.

* post struggling to click on link within htmlunit提出了一个非常类似的问题,但他的解决方案(将浏览器版本设置为webclient)在我的情况下似乎不起作用.

解决方法:

也许你需要等待javascript执行并先加载.我建议使用以下命令:

webClient.waitForBackgroundJavaScript(1000);

甚至:

JavaScriptJobManager manager = page.getEnclosingWindow().getJobManager();
while (manager.getJobCount() > 0) {
    Thread.sleep(100);
}

还有另一种选择:

webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.setAjaxController(new AjaxController(){
    @Override
    public boolean processSynchron(HtmlPage page, WebRequest request, boolean async)
    {
        return true;
    }
});
上一篇:javascript – 仅为某些网页调用shouldOverrideUrlLoading


下一篇:通过javascript模拟单击锚标记