it-swarm.com.de

Python Firefox-Einstellungen für Selenium festlegen - Downloadpfad

Ich verwende Selenium Marrionette und GeckoDriver, um Webdaten abzurufen. Ich verwende die folgenden Einstellungen, um meine Firefox-Profileinstellungen festzulegen:

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)

Nach dem Lesen von Die Firefox-Profileinstellungen können nicht festgelegt werden , _ und FirefoxProfile an FirefoxDriver übergeben , scheint es, als würden jetzt firefox_profile verwendet. Ich muss also die neuen Updates in firefox_capabilities implementieren, bin mir aber nicht sicher, wie ich das genau machen soll. Irgendwelche Ideen?

7
d84_n1nj4

Ok, ich glaube, ich habe es endlich verstanden. Anstelle des obigen Codes habe ich den folgenden Code verwendet, den ich auf meinen Firefox-Profilordner verweise (wenn Sie Ihre Standardprofileinstellungen aktualisieren müssen, müssen Sie dies in Firefox tun, bevor Sie diesen Code ausführen):

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)

Ich habe diesen Code zusammen mit meinem Web-Scraping-Code ausgeführt. Nachdem ich auf den Link "CSV-Export" geklickt hatte, wurde er automatisch heruntergeladen, anstatt das Fenster "Download Manager" aufzurufen. Fühlen Sie sich frei, Feedback zu geben.

7
d84_n1nj4

Der ursprüngliche Code ist teilweise korrekt. Sie müssen den Wert für browser.download.folderList auf 2 setzen: 

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)
1
Rony Rozas

die Lösung für mein Python-Skript (auf Raspi 3):

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

1
basilio

Anstelle der vorherigen Antwort können Sie Rechtsklick wählen und Speichern unter auswählen und im gewünschten Verzeichnis speichern. Nach diesem Punkt wird dieses Verzeichnis angezeigt Ihr Standardverzeichnis für diese Sitzung und Sie können es mit derselben Methode ändern. Dies ist jedoch auch keine Lösung, wenn Sie möchten, dass dieser Pfad dynamisch ist und ihn in derselben Sitzung programmgesteuert ändert. Die Antwort auf dieses Problem lautet also hier .Wenn Sie den Chrome-Treiber verwenden können, befolgen Sie jedoch die Anweisungen in diese Antwort

1
BlanketSniffer