【问题标题】:Python Set Firefox Preferences for Selenium--Download LocationPython 为 Selenium 设置 Firefox 首选项--下载位置
【发布时间】:2017-05-29 09:39:11
【问题描述】:

我使用 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 Firefox\Firefox.exe')

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_binary=binary, firefox_profile = fp)

根据我在阅读Unable to set firefox profile preferencesFirefoxProfile passed to FirefoxDriver 后的理解,现在使用firefox_profile 时似乎没有做任何事情。所以我需要对firefox_capabilities 实施新的更新,但我不确定如何准确地做到这一点。有什么想法吗?

【问题讨论】:

    标签: python selenium web-scraping geckodriver firefox-marionette


    【解决方案1】:

    初始代码部分正确。您必须将 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 Firefox\Firefox.exe')
    
    firefox_capabilities = DesiredCapabilities.FIREFOX
    firefox_capabilities['marionette'] = True
    
    driver = webdriver.Firefox(capabilities=firefox_capabilities,firefox_binary=binary, firefox_profile = fp)
    

    【讨论】:

      【解决方案2】:

      我的 python 脚本的解决方案(在 raspi 3 上):

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

      【讨论】:

      • 这与问题有什么关系?
      【解决方案3】:

      好的,我相信我终于解决了这个问题。我没有使用上面的代码,而是使用了指向我的 Firefox 配置文件文件夹的以下代码(如果您需要在运行此代码之前在 Firefox 中更新默认配置文件设置):

      from selenium.webdriver.firefox.options import Options
      binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')
      fp = (r'C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\oqmqnsih.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”链接,它就会自动下载,而不是弹出下载管理器窗口。随时添加任何反馈。

      【讨论】:

      • 希望我能在几个月前找到这个!
      猜你喜欢
      • 2017-03-31
      • 2021-12-22
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2023-04-04
      相关资源
      最近更新 更多