如何使用Htmlunit为隐藏输入设置值?

时间:2018-06-06 08:58:18

标签: java web-scraping webclient htmlunit

我无法使用Htmlunit设置隐藏输入的值。我尝试将值设置为3个字段的HtmlHiddenInput,但在第2个time(ward)处失败。将值设置为第一个输入后,ajax调用发生而不更改URL,并将值列表设置为下一个下拉列表,我无法选择该值。

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_38);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setTimeout(100000);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.getCookieManager().setCookiesEnabled(true);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.waitForBackgroundJavaScript(120000);
webClient.getCookieManager().setCookiesEnabled(true);

//hosp
HtmlHiddenInput hiddenHosp = (HtmlHiddenInput) form1.getInputByName("ctl00_ContentPlaceHolder1_Hospital_ClientState");
String hosp1 ="{\"logEntries\":[],\"value\":\"\",\"text\":\"Royal Marsden1 Royal Marsden NHS Foundation Trust RM CHELSEA\",\"enabled\":true,\"checkedIndices\":[],\"checkedItemsTextOverflows\":false}";
hiddenHosp.setValueAttribute(hosp1);

//ward
HtmlHiddenInput hiddenWard = (HtmlHiddenInput) form1.getInputByName("ctl00_ContentPlaceHolder1_Ward_ClientState");
String ward1="{\"logEntries\":[],\"value\":\"%\",\"text\":\"All\",\"enabled\":true,\"checkedIndices\":[],\"checkedItemsTextOverflows\":false}";
hiddenWard.setValueAttribute(ward1);

//status
HtmlHiddenInput hiddenStatus = (HtmlHiddenInput) form1.getInputByName("ctl00_ContentPlaceHolder1_Status_ClientState");
String status1 = "{\"logEntries\":[],\"value\":\"%\",\"text\":\"All\",\"enabled\":true,\"checkedIndices\":[],\"checkedItemsTextOverflows\" :false}";
hiddenStatus.setValueAttribute(status1);

截图: Screenshot

1 个答案:

答案 0 :(得分:0)

再次...... waitForBackgroundScrip()不是一个选项。你必须打电话给它,例如设置输入后。

您已禁用Javascript支持但没有Javascript Ajax根本无法运行。通常无需更改任何默认选项。只有在遇到问题并且知道自己在做什么时才更改它们。

最后请至少添加您正在使用的版本。