【问题标题】:How to handle download pop-up in firefox, while downloading excel using Selenium Webdriver如何在Firefox中处理下载弹出窗口,同时使用Selenium Webdriver下载excel
【发布时间】:2016-07-21 04:39:08
【问题描述】:

我正在尝试从 Firefox 和 Webdriver 下载 Excel 文件,但我无法处理下载弹出窗口。

当点击按钮时,我需要文件自动下载,而不显示弹出窗口。

这是我的代码:

FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.setPreference("browser.download.folderList", 2);
firefoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
firefoxProfile.setPreference("browser.download.dir", Constant.Downloaded_Path);
firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk", "text/csv/xls/xlsx");
firefoxProfile.setPreference("browser.helperApps.neverAsk.openFile",
    "text/csv,application/x-msexcel,application/excel,application/x-excel,application/vnd.ms-excel,image/png,image/jpeg,text/html,text/plain,application/msword,application/xml");
firefoxProfile.setPreference("browser.helperApps.alwaysAsk.force", false);
firefoxProfile.setPreference("browser.download.manager.alertOnEXEOpen", false);
firefoxProfile.setPreference("browser.download.manager.focusWhenStarting", false);
firefoxProfile.setPreference("browser.download.manager.useWindow", false);
firefoxProfile.setPreference("browser.download.manager.showAlertOnComplete", false);
firefoxProfile.setPreference("browser.download.manager.closeWhenDone", false);
return firefoxProfile;

但是,上面的代码不起作用。有人可以帮忙吗?

【问题讨论】:

    标签: java selenium-webdriver selenium-firefoxdriver


    【解决方案1】:

    首先需要获取文件对应的mime类型:

    • 打开开发者工具,然后打开网络标签
    • 返回页面点击文件下载
    • 回到网络面板,选择第一个请求
    • 从响应头复制Content-Type右侧的mime类型:

    • 使用您的 MIME 类型设置首选项“browser.helperApps.neverAsk.saveToDisk”
    • 确保下载文件夹“browser.download.dir”存在

    这是一个使用 Firefox 的工作示例:

    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("browser.download.folderList", 2);
    profile.setPreference("browser.download.dir", "C:\\Windows\\temp");
    profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.ms-excel");
    profile.setPreference("pdfjs.disabled", true);  // disable the built-in PDF viewer
    
    WebDriver driver = new FirefoxDriver(profile);
    driver.get("http://www.exinfm.com/free_spreadsheets.html");
    driver.findElement(By.linkText("Capital Budgeting Analysis")).click();
    

    【讨论】:

    • 谢谢弗洛伦特。它适用于 Excel,但不适用于 Pdf。你能帮我解决这个问题吗?提前致谢。
    • 您可以在“browser.helperApps.neverAsk.saveToDisk”中添加多种mime类型。分隔符是逗号。
    • 谢谢,当我设置“pdfjs.disabled”标志时,我让它工作了。周围的许多其他答案/博客文章中都缺少它。
    • 这就像一个魅力。关键是按照您解释的方式获得确切的 Mime 类型。
    • 超级有用的评论
    【解决方案2】:
                FirefoxProfile profile = new FirefoxProfile();
                // profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", " text/plain, application/octet-stream doc xls pdf txt");
                profile.SetPreference("browser.download.manager.alertOnEXEOpen", false);
                profile.SetPreference("browser.helperApps.neverAsk.saveToDisk", "application/csv, text/csv, text/plain,application/octet-stream doc xls pdf txt");
                profile.SetPreference("browser.download.manager.focusWhenStarting", false);
                profile.SetPreference("browser.download.useDownloadDir", true);
                profile.SetPreference("browser.helperApps.alwaysAsk.force", false);
                profile.SetPreference("browser.download.manager.closeWhenDone", true);
                profile.SetPreference("browser.download.manager.showAlertOnComplete", false);
                profile.SetPreference("browser.download.manager.useWindow", false);
                profile.SetPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false);
                profile.SetPreference("pdfjs.disabled", true);
                _driverInstance = new FirefoxDriver(profile); 
    

    这些设置对我有用。希望它可以帮助你。

    【讨论】:

      【解决方案3】:

      您需要为要下载的应用程序提供 mimetypes。 对于python,如果您想为所有应用程序启用它,请使用以下代码

      import mimetypes
      profile.set_preference("browser.helperApps.neverAsk.saveToDisk", ','.join(list(it for it in mimetypes.types_map.values())))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        • 2015-07-09
        • 1970-01-01
        • 2020-06-11
        • 2015-01-18
        • 1970-01-01
        相关资源
        最近更新 更多