【问题标题】:Selenium download file automatically c#Selenium自动下载文件c#
【发布时间】:2019-01-27 17:05:50
【问题描述】:

我正在尝试设置 Firefox 以便自动下载文件。我按照enter link description here 中的建议做了,但我无法让它工作。

这是我的代码:

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 查看器中打开。有什么想法吗?

【问题讨论】:

    标签: c# selenium selenium-webdriver geckodriver downloadfile


    【解决方案1】:

    在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);
    

    可以在here 找到 Mime 提示列表。

    【讨论】:

    • options.addPreference("pdfjs.enabledCache.state",false);是失踪的那个。谢谢
    • 我正在为我的测试动态构建下载路径,但该路径不存在。对于 chrome,它会创建文件夹层次结构以创建下载路径并在那里下载文件。但对于 Firefox,它不会在那里创建路径。 Firefox 浏览器中是否有任何可用设置,以便在不存在时创建下载路径并在那里下载?
    【解决方案2】:

    我的错误,我没有意识到问题是针对 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();
    

    【讨论】:

      猜你喜欢
      • 2013-09-16
      • 2016-02-17
      • 2016-08-12
      • 2020-07-06
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 2019-01-23
      • 2018-09-30
      相关资源
      最近更新 更多