我正在使用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());
我没有任何错误消息。当我比较我的打印时,它们是相同的,但它们不应该是,因为我只是点击一个锚点。首先打印输出应该显示表格的某个页面,第二个打印输出另一个页面。
stackoverflow帖子struggling to click on link within htmlunit提出了一个非常类似的问题,但是他的解决方案(将浏览器版本设置为webclient)在我的情况下似乎不起作用。
答案 0 :(得分:4)
也许您需要等待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;
}
});
答案 1 :(得分:0)
最终HtmlAnchor a = page2.getAnchorByText(“ 7”); HtmlPage page3 = a.click();
//添加此客户端。waitForBackgroundJavaScriptStartingBefore(10000);这里 client.waitForBackgroundJavaScriptStartingBefore(10000);
System.out.println(page2.getWebResponse()。getContentAsString()) System.out.println(page3.getWebResponse()。getContentAsString());