HtmlUnit を使用して HTML フォームに入力して送信しようとしています。1 つのselect
要素とそのオプションは、 を使用してロードされます<body onLoad="...">
。
私の問題: org.apache.http.wireログselect
を見ると、データがロードされていることがわかりますが、getSelectByName、getChildElements などでこの要素を取得できません(ElementNotFoundException がスローされます)。
を印刷page.asXml()
すると、変更されていない HTML ドキュメントしか表示されません。
私のコード:
public static void main(final String[] args) throws Exception {
final URL url = new URL("http://www.rce-event.de/modules/meldung/annahme.php?oid=471&pid=1&ac=d98482bbf174f62eaaa4664c&tkey=468&portal=www.dachau.de&ortsbox=1&callpopup=1");
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6); // tried also FIREFOX_3
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
final HtmlPage page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(10000); // tried also Thread.sleep()
// tried also to use webClient.getCurrentWindow().getEnclosedPage() instead of 'page'
final HtmlForm form = page.getFormByName("formular");
// ElementNotFoundException thrown here:
final HtmlSelect select = form.getSelectByName("event.theme");
final HtmlOption option = select.getOptionByText("Sport/Freizeit");
final Page newPage = select.setSelectedAttribute(option, false);
// submit etc.
}
スタックトレース:
Exception in thread "main" com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[select] attributeName=[name] attributeValue=[event.theme]
at com.gargoylesoftware.htmlunit.html.HtmlForm.getSelectByName(HtmlForm.java:449)
at Xyzzy.main(Xyzzy.java:58)
here、here、およびhere (さらにそれ以上) に書かれているすべてを試しましたが、成功しませんでした。
アップデート:
コードを簡素化し、報奨金を開始しました。