我试图下载一个似乎必须在浏览器中单击的文件。该网站使用一个表单,其中有一个名为downloadFile的javascript函数的多个href。在这个函数中,名为poslimit的元素是通过document.getElementById:获得的
function downloadFile(actionUrl, formId)
{
document.getElementById(formId).action=actionUrl;
document.getElementById(formId).submit();
}
HTML源代码snippet:
<form method="post" name="commandForm" action="position-limits" id="poslimit">
<div id="content">
<li><a href="javascript:downloadFile('position-limits?fileName=20130711&positionLimit=CURRENT_POSITION_LIMIT_', 'poslimit');" > July 11, 2013 </a></li>
因此,点击上面href中的链接代码会调用另一个文件中的javascript:
我试过:
WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
HtmlForm elt = page.getHtmlElementById("poslimit");
elt.setAttribute("action", "position-limits?fileName=20130709&positionLimit=POSITIONLIMITCHANGE_");
InputStream is = elt.click().getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
System.out.print((char)b);
}
webClient.closeAllWindows();
还尝试使用HtmlElement我也试过:
WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
ScriptResult sr = page.executeJavaScript("downloadFile('position-limits?fileName=20130709&positionLimit=POSITIONLIMITCHANGE_', 'poslimit'");
InputStream is = sr.getNewPage().getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
System.out.print((char)b);
}
webClient.closeAllWindows();
这两个都来自这个和其他板上的例子,但我仍然只是拿回原始页面,而不是附件。我还想知道我是否需要查看历史记录以获得正确的页面响应,因为我需要的返回窗口/文档可能是以前的。感谢提供完整解释或良好示例文档的礼貌链接,以及我可以尝试的来源。
所以我认为这可能对其他人有帮助,因为我还没有看到一个工作示例。
WebClient webClient = new WebClient(BrowserVersion.CHROME_16);
HtmlPage page = webClient.getPage("http://www.theocc.com/webapps/position-limits");
HtmlAnchor anchor = null;
List<HtmlAnchor> anchors = page.getAnchors();
for (int i = 0; i < anchors.size(); ++i)
{
anchor = anchors.get(i);
String sAnchor = anchor.asText();
// This date should come in from args
if (sAnchor.equals("July 9, 2013"))
break;
}
// This is not safe, need null check
Page p = anchor.click();
InputStream is = p.getWebResponse().getContentAsStream();
int b = 0;
while ((b = is.read()) != -1)
{
System.out.print((char)b);
}
webClient.closeAllWindows();
这个问题帮了我一点忙,因为我试了锚,它起了作用。难以点击htmlunit 中的链接