繁体   English   中英

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

[英]Clicking on javascript anchor with htmlunit does not seem to work

我正在使用 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 中的链接的 stackoverflow 帖子呈现了一个非常相似的问题,但是他的解决方案(将浏览器版本设置为 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;
    }
});

final HtmlAnchor a = page2.getAnchorByText("7"); HtmlPage page3 = a.click();

// 添加这个 client.waitForBackgroundJavaScriptStartingBefore(10000); 这里 client.waitForBackgroundJavaScriptStartingBefore(10000);

System.out.println(page2.getWebResponse().getContentAsString()) System.out.println(page3.getWebResponse().getContentAsString());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM