当前位置: 首页 > 知识库问答 >
问题:

无法使用ChromeDriver下载文件

厉坚
2023-03-14

我正在使用chromedriver和selenium从应用程序下载文件。但当点击应用程序中的下载按钮时,它给出的错误是“下载失败错误。

Chromedriver版本:2.21硒版本: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下载文件。

共有3个答案

邴奇逸
2023-03-14

找出我的错误花了一些时间,但修复起来非常简单。在我的情况下,我不应该为下载文件夹使用相对文件路径名,而是必须使用绝对文件路径名。

令狐宏伟
2023-03-14

当提供的文件夹丢失或无法访问时,将显示失败-下载错误。这里可能就是这种情况,因为我注意到在文件夹的末尾有一个额外的空间,一旦创建文件夹,这个空间可能会被剥离。试着这样做:

String newPath = Path.Combine("D:\\Backup", "Database");
if (!Directory.Exists(newPath)){
    newPath = Directory.CreateDirectory(newPath).FullName;
}
糜凯泽
2023-03-14

在我的例子中,我有类似的东西,但是错误在我使用的文件夹名称中。我将路径描述为C:/myFolder而不是C:\myFolder。

在之前版本的ChromeDriver中,第一种方法仍然有效。现在看来,这是不工作了,给一些下载错误。

 类似资料:
  • 我正在尝试使用Selenium WebDriver自动执行文件下载功能。我正在使用谷歌浏览器,要下载的文件类型是PDF格式。当 WebDriver 单击下载(或打印)链接时,浏览器将显示 pdf 文件的预览,而不是直接下载。如何使chrome驱动程序直接下载pdf文件?我尝试了下面的代码,但没有运气 我知道这个问题已经在StackOverflow上问过了,包括这个,但这些解决方案都不适合我。 我正

  • 我正在使用ChromeWeb驱动程序2.10 chromedriver_win32。使用SeleniumWebDriver 2.31压缩。2. 启用详细日志记录后,似乎期望的能力(https://sites.google.com/a/chromium.org/chromedriver/capabilities)传递得很好, 但Chrome Web驱动程序正在播放*。mp4而不是下载。 我尝试过如何

  • 由于我仍然不清楚如何在ChromeDriver-Selenium[Java]中使用--headless模式下载文件,请在这里添加如何这样做的示例,我尝试这样做(文件下载工作正常,没有--headless选项): 据我所知,自Chrome V60+以来,通过设置应该可以在无头模式下下载文件,但我找不到ChromeDriver是否已经支持它,或者只是我使用了错误的Chrome首选项作为参数 Chrom

  • 嗨,我一直试图写代码,这样我就可以生成一个excel表,也可以下载当用户点击下载按钮.....我已经成功地生成了excel表,但我尝试下载同样的,但我没有成功。 我使用的方法是:

  • 在我为客户制作的网站上,当他们尝试使用Internet Explorer 11下载文件时,他们无法从该站点下载文件。 这些文件保存在我们的服务器上,使用上传文件的数据库,位置,名称和MIME类型的文件能够被下载。例如,路径为“/uploaded _ files/6f/AE 69 BD 966 ba 4c 740 b 8073 ff 969 a 5425 b”,文件名为“Finland Test 1

  • 我正在寻找一种使用chromedriver将不同文件保存到python中不同位置的方法。下面的代码将chrome设置为下载到文件夹路径,而不首先弹出下载位置对话框。单击并将一个文件下载到文件夹_路径(我跳过了粘贴这部分代码,因为我没有问题)后,我想将另一个文件下载到新的文件夹_路径。但是下面的代码给了我AttributeError:“WebDriver”对象没有属性“Chrome”。如果我可以在同