【发布时间】:2013-12-20 12:02:47
【问题描述】:
我想使用 java 和 HtmlUnit 在下面显示的 html 代码上运行 onclick javascript 函数并获取脚本生成的信息。
<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 的功能是,当您单击链接时,它将显示可以下载的文件的名称(在表格单元格中)及其网址。我想用 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());
与以前的尝试一样,我得到的新页面与以前相同,没有额外信息。
非常感谢有关如何解决此问题的建议。
最好的问候 /托马斯
我添加了以下几行:
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
//This one after getNewPage()
webClient.waitForBackgroundJavaScript(1000);
现在检索到的新页面也没有任何变化。 如何获取错误日志?我没有任何例外。 我还能做什么?
【问题讨论】:
标签: java javascript onclick htmlunit