【发布时间】:2014-11-05 23:52:39
【问题描述】:
我正在为页面dscan.me 编写刮板。它应该用内容填写表单并使用提交输入按钮提交。我在这里没有看到任何问题,但我已经尝试了我所知道的关于 HtmlUnit 的所有内容(这还不算太多)。触发提交事件,执行 javascripts 并从结果中获取新页面......没有任何效果。 如果有更多经验的人在这里发布工作解决方案,我会很高兴。
这就是我在 textArea 中获取控件和设置数据的方式
HtmlForm form = page.getForms().get(0);
HtmlTextArea textArea = form.getTextAreaByName("scandata");
HtmlSubmitInput button = form.getInputByValue("Submit");
textArea.setText(paste);
我确定我有正确的控件并且 textArea 被填充,但这只是在 getNewPage() 调用上以 nullpointer 异常终止
ScriptResult scriptResult = button.fireEvent(Event.TYPE_SUBMIT);
WebClientProvider.getSharedClient().waitForBackgroundJavaScript(10000);
HtmlPage res = (HtmlPage) scriptResult.getNewPage();
这给了我作为结果页面的带有控件的默认页面......而不是处理内容的页面
String js_set = "$(\".inputbox\").val(\""+ paste.replaceAll("\n", "\\n").replaceAll("\t", "\\t") +"\");\n";
String js_submit = "$(\".submitbutton\").click();";
ScriptResult result = page.executeJavaScript(js_submit);
WebClientProvider.getSharedClient().waitForBackgroundJavaScript(10000);
HtmlPage res = (HtmlPage) scriptResult.getNewPage();
这是example 的数据,您可以将其粘贴到dscan.me 以查看工作流程。如果您有想法或找到一些解决方案或解决方法,我会为任何事情感到高兴。谢谢!
【问题讨论】:
标签: java javascript jquery html htmlunit