我需要使用htmlUnit webDriver在不同页面中下载不同的文件。我在页面上循环,对于每个页面,我都单击输入字段以触发下载。对于第一次下载,我单击HtmlInputElement(提交按钮),它会将文件还给我。之后,HtmlPage变成了未预期的页面。检查UnexcpetedPage中的Web响应,我仍然发现文件已经下载。如何解决?
代码:[……]
public void test(HtmlPage htmlPage){
List<?> checkBox = htmlPage.getByXPath("//tbody[@id='TestID:ricerca_report:tb']/tr[child::td[contains(text(),'TEST')]]/td[1]/input[@type='checkbox']");
for (int j = 0; j < checkBox.size(); j++) {
HtmlCheckBoxInput checked = (HtmlCheckBoxInput) checkBox.get(j);
checked.setChecked(true);
}
writeResponseHtml(htmlPage, spOp);
InputStream input = null;
try{
HtmlSubmitInput htmlSubmitInput = htmlPage.getElementByName(param.getNameAttribute());
WebResponse webResponse = htmlSubmitInput.click().getWebResponse();
extractOriginalFileName(webResponse, spiderInfo.getFileName());
if( checkAndSaveFileExtension(webResponse) != null ){
input = webResponse.getContentAsStream();
downloadFile( input );
spiderInfo.setFileName("work/output/spider_logs/");
}else
spiderInfo.setSpiderState(SpiderStates.DOWNLOAD_ERROR);
}catch ( Exception e ){
logger.error("getOperation download exception; " + spOp + "; Exception: " + e);
spiderInfo.setSpiderState(SpiderStates.DOWNLOAD_ERROR);
page = null;
}
writeResponseHtml(htmlPage, spOp);
HtmlTableDataCell tableCell = htmlPage.getFirstByXPath(param.getContainsElement2());
Page p = tableCell.click(); // Here i got the exception
}
[....]
如果有人遇到同样的问题;我使用PageCreator解决了:
PageCreator dpc = new DefaultPageCreator();
HtmlPage detailPage = null;
for (int j = 2 ; j<= 11; j++){ // there are 10 pages
detailPage = (HtmlPage)dpc.createPage(htmlPage.getWebResponse(),webClient.openWindow(htmlPage.getUrl(),"ew Window"));
detailPage = ((HtmlElement)detailPage.getFirstByXPath("MYXPATH")).click();
detailPage = ((HtmlElement)((HtmlPage)detailPage ).getFirstByXPath("MYXPATH2")).click(); // download element
webClient.setCurrentWindow(htmlPage.getEnclosingWindow()); //go back to main window
}// end FOR
其中htmlPage是主页。
问题内容: 我正在尝试使用HtmlUnit在javascript按钮后面下载附件。执行其他任务效果很好(例如,导航,登录)。我检查了附件单元测试,但没有帮助我。 但是,它的结尾是: 创建的文件大小为0。必须有一种方法可以获取附加的真实文件?! 先感谢您 问题答案: 以防万一其他人想知道:您需要使用AttachmentHandler。
首先我想提一下,我是HtmlUnit的新手。我试图获取一个网页,然后解析其内容。网址:https://secure.fattal.co.il/BE_Results.aspx?Lang=heb 但是我最终得到了下面的javascript内容: 注意:我开始使用jsoup解析器获取URL,但是响应是相同的javascript。 在搜索了javascript内容之后,我意识到我应该使用像HtmlUnit
cmf_get_file_download_url($file, $expires = 3600) 功能 获取文件下载链接 参数 $file: string 文件路径,数据库里保存的相对路径 $expires: int 过期时间,单位 s 返回 string 文件链接
X2.2.0新增 sp_get_file_download_url($file,$expires=3600) 功能: 获取文件下载链接 参数: $file: 数据库保存的文件路径 $expires:文件过期时间(七牛) 返回: 类型string,文件下载链接 使用: $url = sp_get_file_download_url('portal/23232.png');
cmf_get_file_download_url($file, $expires = 3600) 功能 获取文件下载链接 参数 $file: string 文件路径,数据库里保存的相对路径 $expires: int 过期时间,单位 s 返回 string 文件链接
问题内容: 基本上,我想确定是否应该使用AJAX下载文件,具体取决于文件大小。 我猜这个问题也可以表述为:我如何仅获取ajax请求的标头? 编辑 :评论中的ultima-rat0告诉了我两个已经被问到的显然与这个相同的问题。它们非常相似,但是都需要jQuery。我想要一个非jQuery解决方案。 问题答案: 您可以手动获取XHR响应头数据: http://www.w3.org/TR/XMLHttp