点击JavaScript锚与HtmlUnit没有似乎没有工作(Clicking on javascr

2019-09-22 02:03发布

我使用到的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());

我没有任何错误消息。 当我比较我打印出来,它们是相同的,但他们不应该,因为我刚刚点击的锚。 首次打印输出应显示该表中的某一页,一个第二打印出一个又一个。

该计算器后奋力点击内的HtmlUnit链接呈现一个非常类似的问题,但是他的解决方案(设置浏览器版本的Web客户端)没有出现在我的情况下工作。

Answer 1:

也许你需要等待javascript来EXCUTE和第1负载。 我建议使用下面的命令:

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;
    }
});


文章来源: Clicking on javascript anchor with htmlunit does not seem to work