Javascript Selenium,无法自动下载文件,下载确认持续显示
我正在研究其他人的代码,该代码应该使用selenium从网页自动下载PDF文件 我不断收到firefox下载确认提示,即使browser.helperApps.neverAsk.saveToDisk属性包含PDF mime类型 我使用的是Selenium 3.12.0,我将firefox版本从70降到了60.0,两个版本都不起作用。我不确定这是代码问题还是selenium firefox兼容问题 我感谢你的帮助 编辑:这是downloand确认弹出窗口的外观Javascript Selenium,无法自动下载文件,下载确认持续显示,javascript,selenium,Javascript,Selenium,我正在研究其他人的代码,该代码应该使用selenium从网页自动下载PDF文件 我不断收到firefox下载确认提示,即使browser.helperApps.neverAsk.saveToDisk属性包含PDF mime类型 我使用的是Selenium 3.12.0,我将firefox版本从70降到了60.0,两个版本都不起作用。我不确定这是代码问题还是selenium firefox兼容问题 我感谢你的帮助 编辑:这是downloand确认弹出窗口的外观 private静态最终字符串mim
private静态最终字符串mimeTypeToSaveToDisk=“application/pdf;application/zip”;
公共无效下载(字符串url,字符串downloadDirPath){
//FirefoxProfile
FirefoxProfile profile=新的FirefoxProfile();
profile.setAcceptUntrustedCertificates(true);
profile.setAssumeUntrustedCertificateAissuer(false);
profile.setPreference(“browser.download.folderList”,2);
profile.setPreference(“browser.download.dir”,downloadDirPath);
profile.setPreference(“browser.helperApps.neverAsk.saveToDisk”,mimeTypeToSaveToDisk);
profile.setPreference(“browser.helperApps.alwaysAsk.force”,false);
profile.setPreference(“browser.download.manager.showWhenStarting”,false);
profile.setPreference(“browser.download.manager.closeWhenDone”,true);
//FirefoxOptions
FirefoxOptions FirefoxOptions=新的FirefoxOptions();
firefoxOptions.setCapability(FirefoxDriver.PROFILE,PROFILE);
firefoxOptions.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true);
//firefoxOptions.setBinary(“C:/PathTo/firefox.exe”);
//代理
如果(!StringUtil.isNullOrEmpty(EmailProperties.getProxyHost(null))){
字符串PROXY_URL=EmailProperties.getProxyHost(null)+“:“+EmailProperties.getProxyPort(null);
Proxy Proxy=新代理();
setHttpProxy(PROXY\u URL).setFtpProxy(PROXY\u URL).setSLProxy(PROXY\u URL);
firefoxOptions.setCapability(CapabilityType.PROXY,PROXY);
}
WebDriver驱动程序=新的FirefoxDriver(firefoxOptions);
获取(url);
ExpectedCondition ExpectedCondition=新的ExpectedCondition(){
@凌驾
公共布尔应用(WebDriver驱动程序){
return((JavascriptExecutor)driver.executeScript(“return document.readyState”).toString().equals(“complete”);
}
};
试一试{
线程睡眠(timeSleep*1000);
WebDriverWait wait=新的WebDriverWait(驱动程序,超时);
等待。直到(预期条件);
}捕获(可丢弃的e){
错误(“等待页面加载请求完成的超时。”,e);
}
By=By.xpath(//a[以(@id,'file'')]开头]”;
列表元素=driver.findElements(按);
对于(int Counter=0;Counter0){
记录器.错误(“Téléchargement ZIP non-finalizeéaprès attente de”+((nbSleep+1)*timeSleep*1000)+“secondes…”);
}
}捕获(可丢弃的e){
错误(“等待页面加载请求完成的超时。”,e);
}
driver.quit();
}
我看到了您正在使用的FirefoxOptions
,我想建议您尝试另一个选项--useDownloadDir
选项。我知道您已经使用了浏览器.download.dir
,但这是另一种设置:
FirefoxOptions options = new FirefoxOptions();
options.setPreference("browser.download.folderList", 2);
options.setPreference("browser.download.dir", "C:\\Windows\\temp");
options.setPreference("browser.download.useDownloadDir", true);
options.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
options.setPreference("pdfjs.disabled", true); // prevent PDF from opening after download
WebDriver driver = new FirefoxDriver(options);
谢谢你的回答,很抱歉我迟了回复,我已经试过了。提醒()。驳回();和alert().accept();但似乎无法解决问题。此选项实际上解决了我的问题options.setPreference(“pdfjs.disabled”,true);非常感谢。
FirefoxOptions options = new FirefoxOptions();
options.setPreference("browser.download.folderList", 2);
options.setPreference("browser.download.dir", "C:\\Windows\\temp");
options.setPreference("browser.download.useDownloadDir", true);
options.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
options.setPreference("pdfjs.disabled", true); // prevent PDF from opening after download
WebDriver driver = new FirefoxDriver(options);