2

我使用Selenium Marrionette和GeckoDriver来提取Web数据。我用下面的设置我的Firefox配置偏好:阅读Unable to set firefox profile preferencesFirefoxProfile passed to FirefoxDriverPython为Selenium设置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)

据我所知,似乎没有什么是现在使用firefox_profile时完成。所以我需要实施firefox_capabilities的新更新,但我不确定如何完全做到这一点。有任何想法吗?

回答

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”链接,它会自动下载,而不是弹出“下载管理器”窗口。随意添加任何反馈。

0

取而代之的是前面的回答,您可以右击,选择另存为并将其保存到所需的目录,并在该点之后,该目录将成为该会话和您在默认目录可以用相同的方法改变它。但是,如果您希望该路径是动态的并且在同一个会话中以编程方式更改它,那么这也不是一个解决方案。所以对于这个问题的答案是here。如果你可以使用Chrome的驱动程序然而,按照this answer

0

说明书(上raspi 3)我的python脚本的解决方案:

二进制= FirefoxBinary('的/ usr/bin/firefox') 驱动程序= webdriver.Firefox(capabilities = {'browserName':'firefox'},firefox_binary = binary)

0

初始代码部分正确。您必须将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) 
相关问题