在 Python 中使用 Selenium 下载文件:即使设置了 Firefox 配置文件,下载窗口也会打开

Posted

技术标签:

【中文标题】在 Python 中使用 Selenium 下载文件:即使设置了 Firefox 配置文件,下载窗口也会打开【英文标题】:Selenium in Python to download file: even after setting Firefox Profile the Download Window opens 【发布时间】:2017-07-01 08:53:13 【问题描述】:

我正在尝试在 Python 中使用 Selenium 从网站下载文件。为了做到这一点,我读到我需要更改我的 Firefox 配置文件中的设置以避免打开下载对话窗口。我在下面提供了示例代码。这段代码在家里工作得非常好,但在我的工作电脑上不能正常工作。我怀疑 Python 无法以某种方式更改 firefox 配置文件的设置,即使下面的代码不会引发错误而是可以正常工作并最终打开下载对话窗口。

from selenium import webdriver
import os


profile = webdriver.FirefoxProfile("C:\\Users\\Ric\\Documents\\Python Scripts\\FirefoxProfileCopies\\ric.copy")

profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', os.getcwd())
profile.set_preference('browser.helperApps.neverAsk.saveToDisk',('application/vnd.ms-excel'))

browser = webdriver.Firefox(profile)   
browser.get("http://www.sample-videos.com/download-sample-xls.php")
elem1 = browser.find_element_by_css_selector(".push-form > table:nth-child(2) > tbody:nth-child(2) > tr:nth-child(4) > td:nth-child(4) > a:nth-child(1)")
elem1.click()

此代码与我的 Firefox 及其在家配置文件完美配合,但不适用于我的工作电脑。有人知道为什么会这样吗?提前谢谢你。

编辑

我尝试从 Microsoft 网页添加所有 MIMEtypes,但仍然会打开下载管理器窗口。在打开下载链接之前停止要执行的代码并尝试使用about:config查看使用的 Firefox 配置文件的设置时,将显示以下值:

【问题讨论】:

您确定在正确的文件夹中搜索下载的文件吗?尝试用profile.set_preference('browser.download.dir', 'C:\\Users\\Ric\\Desktop')替换profile.set_preference('browser.download.dir', os.getcwd()) 你好安德森,谢谢你的想法。我试过了,文件肯定没有下载,它没有出现在我的桌面上。 Firefox 会打开下载窗口,因此尚未下载。还有什么想法吗?我感谢每一个提示。 检查文件MIME-type是否真的是application/vnd.ms-excel,你可能需要再添加几个MIME类型 我会尝试这样做,您有什么建议可以添加MIME 类型吗?另外,这能否解释为什么它在家里工作,但在我的电脑上却不能工作? 检查此链接blogs.msdn.microsoft.com/vsofficedeveloper/2008/05/08/… 以获取适用于MicrosoftOffice 文件的MIME 类型 【参考方案1】:

所以,经过大量尝试,我想再次查看 Firefox 中的 Firefox 设置,因为它适用于空配置文件。我设法解决了我的问题,最后通过转到 firefox、设置和更改应用程序的设置使下载窗口消失:

然后,打开此菜单时,搜索 excel 并将值从“每次询问”更改为“保存文件/下载文件”。抱歉,如果列表中的这些条目与 Firefox 中的实际条目不同,但我的 Firefox 是德语的。这样做之后,我的问题就解决了。我希望它可以解决其他人:) 并感谢安德森。

【讨论】:

以上是关于在 Python 中使用 Selenium 下载文件:即使设置了 Firefox 配置文件,下载窗口也会打开的主要内容,如果未能解决你的问题,请参考以下文章

python selenium,找到下载完成后?

webUI自动化之基本框架搭建(python + selenium + unittest)

安装selenium操作步骤(python中使用selenium)

使用Chrome驱动程序通过python和selenium在指定位置下载文件

python环境中selenium的下载与安装

windows10下python中selenium的chrome驱动安装与使用