【问题标题】:Unable to download file using ChromeDriver无法使用 ChromeDriver 下载文件
【发布时间】:2016-09-16 02:35:12
【问题描述】:

我正在使用带有 selenium 的 chromedriver 从应用程序下载文件。但是在点击应用程序中的下载按钮时,它给出的错误是“Failed-Download error.

Chrome 驱动程序版本: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 下载文件。

【问题讨论】:

    标签: java selenium selenium-chromedriver


    【解决方案1】:

    我有一个类似的问题,我试图在下载前在运行时更改文件下载目录路径。下面的代码对我有用。

    //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()
    

    【讨论】:

      【解决方案2】:

      如果您在 Linux 上并且“download.default_directory”仍然保存您的个人目录值,请查看文件 ~/.config/user-dirs.dirs 中的 env XDG_DOWNLOAD_DIR

      您可以从该文件中删除变量,或者您可以在运行程序之前将其设置为您喜欢的任何值。

      我的软件集:

      • Ubuntu 仿生,18.04.5 LTS
      • chromedriver.86.0.4240.22.lin64
      • Python 3.9
      • 硒 3.141.0
      • 分裂0.14.0

      【讨论】:

        【解决方案3】:

        花了一些时间才发现我的错误,但修复起来非常简单。 就我而言,我不应该对下载文件夹使用相对文件路径名称,而是必须使用绝对文件路径名称。

        【讨论】:

          【解决方案4】:

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

          在以前版本的 ChromeDriver 中,第一种方法仍然有效。现在看起来这不再起作用了,给出了一些下载错误。

          【讨论】:

            【解决方案5】:

            当提供的文件夹丢失或无法访问时,会显示Failed - Download error。这里可能就是这种情况,因为我注意到末尾有一个额外的空间,一旦创建文件夹,它可能会被剥离。试试这种方法:

            String newPath = Path.Combine("D:\\Backup", "Database");
            if (!Directory.Exists(newPath)){
                newPath = Directory.CreateDirectory(newPath).FullName;
            }
            

            【讨论】:

            • 注意额外的空间。谢谢。
            猜你喜欢
            • 2022-10-15
            • 2017-04-06
            • 1970-01-01
            • 2018-06-11
            • 2018-11-10
            • 2017-11-27
            • 2013-09-10
            • 2012-12-29
            • 2017-08-18
            相关资源
            最近更新 更多