web-dev-qa-db-ja.com

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

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

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

firefoxプロファイル設定を設定できません および FirefoxProrがFirefoxDriverに渡されました を読んだ後、私が理解したことから、firefox_profileを使用しても何も行われていないようです。そのため、firefox_capabilitiesへの新しい更新を実装する必要がありますが、正確にそれを行う方法がわかりません。何か案は?

8
d84_n1nj4

わかりました、私は最終的にこの混乱を理解したと思います。上記のコードを使用する代わりに、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)

このコードをWebスクレイピングコードと一緒に実行し、[CSVのエクスポート]リンクをクリックすると、ダウンロードマネージャーウィンドウがポップアップするのではなく、自動的にダウンロードされました。フィードバックを追加してください。

8
d84_n1nj4

最初のコードは部分的に正しいです。 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
Rony Rozas

私の解決策pythonスクリプト(raspi 3)):

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

前の答えの代わりに、右クリックして、save asとして保存し、目的のディレクトリに保存すると、そのディレクトリがそのセッションのデフォルトディレクトリになり、変更できます同じ方法でそれを。ただし、そのパスを動的にして、同じセッションでプログラムによって変更する場合、これも解決策ではありません。したがって、その問題の答えは ここ です。Chromeドライバを使用できる場合は、 この答え の指示に従ってください

1
EmreAkkoc