我正在使用chromedriver和selenium从应用程序下载文件。但是在点击应用程序中的下载按钮时,它给出的错误为“Failed-Download error.
”
Chromedriver版本:2.21 Selenium版本:2.53.0
初始化Chrome驱动程序和更改下载位置的代码:
String newPath = "D:\\Backup" + File.separator + "Database ";
new File(newPath).mkdir();
HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", newPath);
chromePrefs.put("safebrowsing.enabled", "true");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", chromePrefs);
options.addArguments("--test-type");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability("disable-popup-blocking", true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
System.setProperty("webdriver.chrome.driver", CHROME_DRIVER_PATH);
driver = new ChromeDriver(cap);
// Maximize the driver window
driver.manage().window().maximize();
错误:
有人可以帮我吗? 我可以手动从Chrome下载文件。
答案 0 :(得分:2)
就我而言,我有类似的东西,但是错误出在我使用的文件夹名称中。 我将路径描述为C:/ myFolder而不是C:\ myFolder。
在先前版本的ChromeDriver中,第一种方法仍然有效。现在看来这不再起作用了,并给出了一些下载错误。
答案 1 :(得分:1)
当提供的文件夹丢失或无法访问时,会显示Failed - Download error
。这可能是这种情况,因为我注意到最后一个额外的空间,一旦创建文件夹,可能会被剥离。请尝试这种方式:
String newPath = Path.Combine("D:\\Backup", "Database");
if (!Directory.Exists(newPath)){
newPath = Directory.CreateDirectory(newPath).FullName;
}
答案 2 :(得分:1)
花了一些时间才能找出我的错误,但修复起来非常简单。 就我而言,我不应该为下载文件夹使用相对文件路径名称,而是必须使用绝对文件路径名称。
答案 3 :(得分:0)
//Set Browser Capabilities.
String ProjectDirectory=RunConfiguration.getProjectDir()
String DownloadFolderPath1=ProjectDirectory+"/Downloads"
String DownloadFolderPath=DownloadFolderPath1.replace('/', '\\')
String AppURL=GlobalVariable.MyAppURL
Map<String, Object> chromePrefs = new HashMap<String, Object>()
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", DownloadFolderPath)
chromePrefs.put("download.prompt_for_download", false)
chromePrefs.put("plugins.plugins_disabled", "Chrome PDF Viewer");
ChromeOptions options=new ChromeOptions();
//options.addArguments("--headless")
//options.addArguments("--window-size=1920,1080")
options.addArguments("--test-type")
//options.addArguments("--disable-gpu")
options.addArguments("--no-sandbox")
//options.addArguments("--disable-dev-shm-usage")
options.addArguments("--disable-software-rasterizer")
options.addArguments("--disable-popup-blocking")
options.addArguments("--disable-extensions")
options.setExperimentalOption("prefs", chromePrefs)
DesiredCapabilities cap = DesiredCapabilities.chrome()
cap.setCapability(ChromeOptions.CAPABILITY, options)
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true)
System.setProperty("webdriver.chrome.driver", DriverFactory.getChromeDriverPath())
WebDriver driver = new ChromeDriver(cap);
driver.get(AppURL)
driver.manage().window().maximize()
答案 4 :(得分:0)
如果您使用的是Linux,并且“ download.default_directory”仍保留您的个人目录值,请在文件〜/ .config / user-dirs.dirs 中观看env XDG_DOWNLOAD_DIR
您可以从该文件中删除变量,也可以在运行程序之前将其设置为任意值。
我的软件设置: