HTMLUnit を使用して Web 上のページを取得しています。この Web ページには、フォームがあります。Chrome から読み込んでソースを表示すると、次のようになります。
<form name="form" method="post" onsubmit="return checkDate();">
<input name="check_in_date" id="check_in_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_out_date" id="check_out_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_availability" value="test condition" type="submit"/>
</form>
しかし、このコードで HTMLUnit を使用してロードしている場合:
String url = "sample link";
WebClient webClient = new WebClient();
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
HtmlPage page = webClient.getPage(url);
System.out.println(page.asXML());
別の HTML コードを取得します。もっと詳しく :
<form name="form" method="post" onsubmit="return checkDate();">
<input name="check_in_date" id="check_in_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_out_date" id="check_out_date" readonly="readonly" type="text" class="hasDatepicker"/>
<input name="check_availability" value="test condition" type="text"/>
</form>
ここでの違いは次のとおりです。最後の行: <input name="check_availability" value="test condition" type="text"/>
送信ではなくテキストを入力するため、この種のコードはできません:
HtmlForm form = page.getFormByName("form");
HtmlSubmitInput submit = form.getInputByName("check_availability"); // error at this line
page = submit.click();
現在、このフィールドはbutton
もはやテキストではなく、単なるテキストであるため、エラーが発生しました。なぜこの違いがあるのか わかりません。これを修正する方法を教えてください。
ありがとう :)