J'utilise Selenium Marrionette et GeckoDriver pour extraire des données Web. J'utilise les éléments suivants pour définir mes préférences de profil 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)
D'après ce que j'ai compris après avoir lu Impossible de définir les préférences de profil firefox et FirefoxProfile transmis à FirefoxDriver , il semble que rien ne soit fait lors de l'utilisation de firefox_profile
maintenant. Je dois donc implémenter les nouvelles mises à jour à firefox_capabilities
, mais je ne sais pas comment faire exactement cela. Des idées?
Ok, je crois que j'ai finalement compris ce gâchis. Au lieu d'utiliser le code ci-dessus, j'ai utilisé le code suivant que je pointe vers mon dossier de profil Firefox (si vous devez mettre à jour vos paramètres de profil par défaut, faites-le dans Firefox avant d'exécuter ce code):
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)
J'ai exécuté ce code avec mon code Web et, une fois que j'ai cliqué sur le lien "Exporter au format CSV", il s'est automatiquement téléchargé, contrairement à la fenêtre du Gestionnaire de téléchargement qui s'ouvre. N'hésitez pas à ajouter des commentaires.
Le code initial est partiellement correct. Vous devez définir la valeur de browser.download.folderList sur 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)
la solution pour mon script python (sur raspi 3):
binary = FirefoxBinary ('/ usr/bin/firefox') driver = webdriver.Firefox (capacités = {'browserName': 'firefox'}, firefox_binary = binary)
Au lieu de la réponse précédente, vous pouvez cliquer avec le bouton droit de la souris sur et choisir enregistrer sous et l'enregistrer dans le répertoire souhaité. cette session et vous pouvez le changer avec la même méthode. Mais celui-ci n’est pas non plus une solution si vous voulez que ce chemin soit dynamique et le change par programme au cours de la même session. la réponse à ce problème est donc ici . Si vous pouvez utiliser le pilote Chrome, suivez toutefois les instructions données dans cette réponse