HTMLUnit使用javascript代码执行表单
我想做的就是使用java nad HTMLUnit框架远程询问ask.fm上的问题。 我认为它不起作用因为javascript代码,但我不确定。
这就是问题表格的样子:
这就是我要做的事情:
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秒。 对于一个更好的解决方案,你也可以尝试这个 。