HTMLUnit使用javascript代码执行表单

我想做的就是使用java nad HTMLUnit框架远程询问ask.fm上的问题。 我认为它不起作用因为javascript代码,但我不确定。

这就是问题表格的样子:

KILO K ♣
//

这就是我要做的事情:

 WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17); webClient.getCookieManager().setCookiesEnabled(true); webClient.setJavaScriptEnabled(true); webClient.setThrowExceptionOnScriptError(false); HtmlPage page = webClient.getPage("http://ask.fm/username"); List forms = page.getForms(); HtmlForm ask = forms.get(1); HtmlSubmitInput button = ask.getInputByName("commit"); HtmlTextArea text = ask.getTextAreaByName("question[question_text]"); text.setText("question"); HtmlPage click = button.click(); webClient.closeAllWindows(); 

执行程序时我也收到了很多警告:

PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify警告:遇到过时的内容类型:’text / javascript’。

这是post在chrome中提交时包含的内容:

 authenticity_token:b9o8BHnVU6KDQ/oMsdQh+ClYPlS10134bpa7bFCkqtA= question[question_text]:question authenticity_token:b9o8BHnVU6KDQ/oMsdQh+ClYPlS10134bpa7bFCkqtA= 

我怎么做到的? 任何的想法?

你正在做对,你只是没有等待提交处理。 在HtmlPage click = button.click();之后添加HtmlPage click = button.click(); 线:

 webClient.waitForBackgroundJavaScript(10 * 1000); 

它将等待10秒。 对于一个更好的解决方案,你也可以尝试这个 。