【发布时间】:2021-06-25 17:26:58
【问题描述】:
我的环境:
Firefox version : 78.9.0esr (64 bits)
Web driver : geckodriver-v0.26.0-win64
OS: Windows 10 (64 bits)
Python version: 3.8 (64 bits)
Python Selenium package version : 3.141.0
我的要求是通过 Selenium(Python 代码)从网页下载 CSV 文件,但不打开对话框。我的意思是,如果您手动单击下载按钮,您会看到一个对话框,询问名称(如果您想更改默认名称)和保存文件的位置。我想要做的是绕过对话框步骤,因此当 Selenium 单击按钮时,特定文件将被下载到我用其默认名称指定的某个默认目录。经过大量谷歌搜索(包括 stackoverflow.com 上的线程)后,我了解到这可以通过为 Selenium 使用的 Firefox 实例创建一个新配置文件来通过以下方式实现。所以这是我的代码:
self.profile = webdriver.FirefoxProfile()
self.profile.set_preference("browser.preferences.instantApply", True)
self.profile.set_preference("browser.download.folderList", 2)
self.profile.set_preference("browser.download.dir", os.getcwd())
self.profile.set_preference(
"browser.helperApps.neverAsk.saveToDisk",
"text/csv;charset=ISO-8859-1"
)
self.profile.set_preference(
"browser.helperApps.neverAsk.openFile",
"text/csv;charset=ISO-8859-1"
)
self.profile.set_preference(
"browser.download.manager.showWhenStarting",
False
)
self.profile.set_preference(
"browser.download.manager.showAlertOnComplete",
False
)
self.profile.set_preference("browser.download.panel.shown", False)
self.profile.set_preference(
"browser.download.manager.focusWhenStarting",
False
)
self.profile.set_preference(
"browser.download.manager.useWindow",
False
)
self.profile.set_preference(
"browser.download.manager.closeWhenDone",
False
)
self.web_driver = webdriver.Firefox(firefox_profile=self.profile)
现在上面提到的代码的问题是它仍然打开对话框,唯一有效的部分如下:
self.profile.set_preference("browser.download.folderList", 2)
self.profile.set_preference("browser.download.dir", os.getcwd()
但除此之外,主要问题仍然存在,即每次出现对话框时。现在我一直在查看网络上的许多页面(论坛、教程等),当我比较他们建议的代码时,在我看来我已经以同样的方式进行了,我看不出还有什么其他的术语应该/可以添加命令/选项,以防止打开对话框,而是自动下载 CSV 文件。如果您能澄清一下并指出我的代码有什么问题,我将不胜感激。
【问题讨论】:
标签: python selenium firefox geckodriver selenium-firefoxdriver