Python 为 Selenium 设置 Firefox 首选项 - 下载位置



我使用Selenium Marrionette和GeckoDriver来提取Web数据。我使用以下方法来设置我的 Firefox 配置文件首选项:

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 1)
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", "H:Downloads")
fp.set_preference("browser.download.downloadDir","H:Downloads")
fp.set_preference("browser.download.defaultFolder","H:Downloads")
binary = FirefoxBinary(r'C:Program Files (x86)Mozilla FirefoxFirefox.exe')
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_binary=binary, firefox_profile = fp)

从我阅读无法设置Firefox配置文件首选项和FirefoxProfile传递给FirefoxDriver后的理解来看,现在使用firefox_profile时似乎什么也没做。所以我需要实现新的更新来firefox_capabilities,但我不确定如何做到这一点。有什么想法吗?

好吧,我相信我终于想通了这个烂摊子。我没有使用上面的代码,而是使用了以下代码,我指向我的 Firefox 配置文件文件夹(如果您需要更新默认配置文件设置,请在运行此代码之前在 Firefox 中执行此操作):

from selenium.webdriver.firefox.options import Options
binary = FirefoxBinary(r'C:Program Files (x86)Mozilla FirefoxFirefox.exe')
fp = (r'C:UsersusernameAppDataRoamingMozillaFirefoxProfilesoqmqnsih.default')
opts = Options()
opts.profile = fp
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities,firefox_binary=binary, firefox_options = opts)

将此代码与我的网络抓取代码一起运行,一旦我单击"导出CSV"链接,它就会自动下载,而不是弹出下载管理器窗口。请随时添加任何反馈。

初始代码部分正确。您必须将 browser.download.folderList 值设置为 2 :

fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList", 2) # 0 means to download to the desktop, 1 means to download to the default "Downloads" directory, 2 means to use the directory 
fp.set_preference("browser.helperApps.alwaysAsk.force", False)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", "H:Downloads") 
binary = FirefoxBinary(r'C:Program Files (x86)Mozilla FirefoxFirefox.exe')
firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities,firefox_binary=binary, firefox_profile = fp)

我的 Python 脚本的解决方案(在 Raspi 3 上):

binary = FirefoxBinary('/usr/bin/firefox')
driver = webdriver.Firefox(capabilities={'browserName': 'firefox' }, firefox_binary=binary)

最新更新