Я хочу запустить функцию onclick javascript, в приведенном ниже html-коде, с java и HtmlUnit и получить информацию, которую создают скрипты.выполнить onclick с помощью HtmlUnit и получить результат
<td width="13"><a class="img_attachfile16" alt="show files" title="show files" rel="Hide files" href="#" onclick="return (DocumentFiles.ShowHideFiles(12, 345234, 0, this))"></a></td>
Какую функцию ShowHideFiles сделать то, что при нажатии на ссылку она покажет вам имена файлов (в ячейке таблицы), которые могут быть загружены и их URL. Я хочу получить эту информацию с помощью java и HtmlUnit, но я не могу заставить ее работать. Это то, что я пробовал:
webClient = new WebClient(BrowserVersion.FIREFOX_17);
HtmlPage page = webClient.getPage(url);
List tables = page3.getByXPath("//table");
//Get the right table
HtmlTable table = (HtmlTable) tables.get(11);
List<HtmlTableCell> cells = tableRow.getCells();
//Get the right cell and its childelement(where the onclick function is).
HtmlElement element = cells.get(10).getFirstElementChild();
String clickAttr = element.getOnClickAttribute();
ScriptResult scriptResult = page.executeJavaScript(clickAttr);
//Get new page
HtmlPage page2 = (HtmlPage) scriptResult.getNewPage();
System.out.println(page2.asXml());
Новая страница я получаю такое же, как и раньше, а это означает, что я не вижу дополнительную информацию я хочу. Я также попытался выполнить щелчок из HtmlElement, как это:
//Same as before but now make HtmlAnchor object from right cell
HtmlAnchor anchor = (HtmlAnchor) cells.get(10).getFirstElementChild();
page2 = (HtmlPage) anchor.click();
System.out.println(page2.asXml());
Как и предыдущая попробовать новую страницу я получаю такое же, как и раньше, без дополнительной информации.
Я был бы очень благодарен за предложения относительно того, как это решить.
С наилучшими пожеланиями /Tomas
Я добавил эти строки:
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
//This one after getNewPage()
webClient.waitForBackgroundJavaScript(1000);
Нет изменений в новой найденной страницы в настоящее время либо. Как получить журналы ошибок? У меня нет никаких исключений. Что еще я могу сделать?
Теперь я попытался включить это в свой код: – Tom