Selenium自动下载文件c#

Selenium download file automatically c#

我正在尝试设置 Firefox 以便自动下载文件。我按照 中的建议进行了操作,但无法正常工作。

这是我的代码:

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);  // disable the built-in PDF viewer
        options.SetPreference("browser.download.useDownloadDir", true);
        driver = new FirefoxDriver(options);
        driver.Manage().Window.Maximize();
        driver.Navigate().GoToUrl("https://www.mozilla.org/en-US/foundation/documents");
        driver.FindElement(By.LinkText("IRS Form 872-C")).Click();

PDF 仍在浏览器 PDF 查看器中打开。

要禁用在 firefox 中打开和下载 pdf:

FirefoxOptions options = new FirefoxOptions();
options.addPreference("browser.download.folderList", 2);
options.addPreference("browser.download.dir", downloadPath);
options.addPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf");
options.addPreference("pdfjs.enabledCache.state",false); 
WebDriver driver = new FirefoxDriver(options);

可以找到 Mime 提示列表 here

我的错误,我没有意识到问题是针对C#的。

所以我在 Java 中做到了,我认为 selenium 的功能与语言无关。不过,这里重要的是如何配置FirefoxDriver。

使用硒 3.8:

    FirefoxProfile profile = new FirefoxProfile();
    //if you want to download the file to a different directory than the default
    profile.setPreference("browser.download.dir", "dirPath");

    //0: the desktop, 1 (default): the downloads folder, 2: the last folder specified for a download
    profile.setPreference("browser.download.folderList", 2);

    profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/pdf;");
    profile.setPreference("browser.download.manager.showWhenStarting", false);
    profile.setPreference("pdfjs.disabled", true);

    //The previous configuration can also be done in FirefoxOptions, I did not know and I simply passed the FirefoxProfile object
    FirefoxOptions fo = new FirefoxOptions();
    fo.setProfile(profile);

    FirefoxDriver driver = new FirefoxDriver(fo);

    driver.get("http://your.web");
    driver.findElement(By.id("download_button")).click();