Я попытался загрузить файл, который, похоже, нужно щелкнуть через браузер. На сайте используется форма, внутри которой есть несколько ссылок на функцию javascript с именем downloadFile. В этой функции элемент с именем poslimit получается с помощью document.getElementById:
function downloadFile(actionUrl, formId)
{
document.getElementById(formId).action=actionUrl;
document.getElementById(formId).submit();
}
Фрагмент исходного кода HTML:
<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();
Оба они взяты из примеров на этой и других досках, но я продолжаю просто возвращать исходную страницу вместо прикрепленного файла. Мне также интересно, нужно ли мне просматривать историю для правильного ответа страницы, поскольку, возможно, нужное мне окно/документ возврата является предыдущим. Вежливые ссылки на полные объяснения или хорошие примеры документации, а также источник, который я мог бы попробовать, приветствуются.