如何使用 webdriver 在 Firefox 中处理下载 .xlsx 文件,其中窗口弹出默认为“打开方式”单选按钮而不是“保存文件”

Posted

技术标签:

【中文标题】如何使用 webdriver 在 Firefox 中处理下载 .xlsx 文件,其中窗口弹出默认为“打开方式”单选按钮而不是“保存文件”【英文标题】:How to handle downloading .xlsx file in firefox using webdriver where window popup is defaulted to 'Open with' radio button instead of 'Save file' 【发布时间】:2015-12-14 15:58:54 【问题描述】:

我有一个包含链接的 Web 应用程序。单击此链接时,它会打开窗口弹出窗口,要求使用特定应用程序打开文件。

我编写了以下代码来创建适用于其他文件扩展名的 firefox 配置文件,但不适用于 .xlsx 文件。

        profile.setEnableNativeEvents(true);

        profile.setPreference("browser.download.folderList", 2);
        profile.setPreference("browser.download.manager.showWhenStarting", false);
        profile.setPreference("browser.download.dir", System.getProperty("user.dir")+"\\src\\com\\Download");
        profile.setPreference("browser.download.downloadDir", System.getProperty("user.dir")+"\\src\\com\\Download");
        profile.setPreference("browser.download.defaultFolder", System.getProperty("user.dir")+"\\src\\com\\Download");
        profile.setPreference("browser.download.manager.closeWhenDone", true);
        profile.setPreference("pdfjs.disabled", true);
        profile.setPreference("browser.helperApps.alwaysAsk.force", false);
        profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/xls, application/zip,text/csv,application/msword,application/excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/pdf," +
                "application/vnd.ms-excel,application/msword,application/unknown,application/vnd.openxmlformats-officedocument.wordprocessingml.document");

下面是我得到的弹出窗口:-

我认为,由于弹出窗口未默认为“保存文件”单选按钮,因此 firefox 配置文件不起作用。有什么解决方案可以处理这种情况?

【问题讨论】:

在代码中,指定为“application/xls”,可以吗?在这里使用 .xlsx .. @muraliseleniumtrainer,对于具有 .xls 扩展名的文件以及在弹出窗口中单选按钮默认为“保存文件”时,应用程序/xls 可以正常工作。 很好,你试过 application/xlsx 吗?当您在这里使用 xlsx 文件时..我可以知道当您这样做时会发生什么吗? 是的,我使用了 application/xlsx,但它没有用。我认为主要问题是弹出窗口默认为“打开方式”单选按钮。如果是“保存文件”,我的代码可能会起作用。 Hoo.. 我也试试这个.. 同时我们可以使用键模拟可能是 tab 和 enter 来做到这一点.. 我们也不能保存设置以保存到配置文件中的默认值并调用那个个人资料在这里? 【参考方案1】:

这个偏好对我有用。

profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

下表记录了处理 Office 2007 文档时可用的 HTTP MIME 类型:

外部 MIME 类型

.doc 应用程序/msword .dot 应用程序/msword .docx application/vnd.openxmlformats-officedocument.wordprocessingml.document .dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template .docm application/vnd.ms-word.document.macroEnabled.12 .dotm application/vnd.ms-word.template.macroEnabled.12 .xls application/vnd.ms-excel .xlt 应用程序/vnd.ms-excel .xla 应用程序/vnd.ms-excel .xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template .xlsm application/vnd.ms-excel.sheet.macroEnabled.12 .xltm application/vnd.ms-excel.template.macroEnabled.12 .xlam application/vnd.ms-excel.addin.macroEnabled.12 .xlsb application/vnd.ms-excel.sheet.binary.macroEnabled.12 .ppt application/vnd.ms-powerpoint .pot application/vnd.ms-powerpoint .pps application/vnd.ms-powerpoint .ppa 应用程序/vnd.ms-powerpoint .pptx application/vnd.openxmlformats-officedocument.presentationml.presentation .potx application/vnd.openxmlformats-officedocument.presentationml.template .ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow .ppam application/vnd.ms-powerpoint.addin.macroEnabled.12 .pptm application/vnd.ms-powerpoint.presentation.macroEnabled.12 .potm application/vnd.ms-powerpoint.template.macroEnabled.12 .ppsm application/vnd.ms-powerpoint.slideshow.macroEnabled.12

【讨论】:

以上是关于如何使用 webdriver 在 Firefox 中处理下载 .xlsx 文件,其中窗口弹出默认为“打开方式”单选按钮而不是“保存文件”的主要内容,如果未能解决你的问题,请参考以下文章

如何告诉 webdriver-io 使用 Firefox 开发者版?

在 Webdriver 中提交表单后如何等待页面加载。我正在使用 Firefox 驱动程序

如何让 Firefox 在 Mac OSX 上与 Selenium WebDriver 一起工作

如何隐藏 Firefox 窗口(Selenium WebDriver)?

selenium webdriver如何启用Firefox插件?

如何使用 webdriver 在 Firefox 中处理下载 .xlsx 文件,其中窗口弹出默认为“打开方式”单选按钮而不是“保存文件”