paramétrage des préférences Chrome w / Selenium Webdriver en Python

J'utilise Selenium Webdriver (en Python) pour automatiser le téléchargement de milliers de fichiers. Je veux configurer le dossier de téléchargement de Chrome par programmation. Après la lecture de , j'ai essayé ceci:

chromepath = '/Users/thiagomarzagao/Desktop/searchcode/chromedriver'
desired_caps = {'prefs': {'download': {'default_directory': '/Users/thiagomarzagao/Desktop/downloaded_files/'}}}
driver = webdriver.Chrome(executable_path = chromepath, desired_capabilities = desired_caps)

Pas bon. Les téléchargements vont toujours dans le dossier de téléchargement par défaut ("/Users/thiagomarzagao/Downloads").

des idées?

(Python 2.7.5, sélénium 2.2.0, Chromedriver 2.1.210398, Mac OS X 10.6.8)

16
demandé sur Community 2013-08-03 01:26:00

5 réponses

La suite fonctionné pour moi:

chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : "/some/path"}
chromeOptions.add_experimental_option("prefs",prefs)
chromedriver = "path/to/chromedriver.exe"
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chromeOptions)

Source:https://sites.google.com/a/chromium.org/chromedriver/capabilities

40
répondu MervS 2014-01-22 05:40:50

si quelqu'un a encore des problèmes et que les solutions ci-dessus n'ont pas fonctionné, j'ai trouvé en ajoutant une barre oblique ('\') à mon chemin de téléchargement.

la Mienne ressemblait à ceci:

    if browser == 'chrome':
        options = webdriver.ChromeOptions()
        options.add_argument("--start-maximized")
        prefs = {"profile.default_content_settings.popups": 0,
                 "download.default_directory": r"C:\Users\user_dir\Desktop\", # IMPORTANT - ENDING SLASH V IMPORTANT
                 "directory_upgrade": True}
        options.add_experimental_option("prefs", prefs)
        return webdriver.Chrome(executable_path=Base.chromedriver_dir, chrome_options=options)
7
répondu yvesva 2017-03-22 05:41:57

je pense que vous avez aussi besoin d'

"directory_upgrade": true

en utilisant le dictionnaire directement dans un fichier Chrome 'Prefrences', sur une installation Windows locale de la version 28.0.1500.95 m de chrome, avec les options de téléchargement suivantes:

   "download": {
      "default_directory": "C:\Users\rdub\Desktop",
      "extensions_to_open": ""
   },

je l'emplacement par défaut, contre le bureau. Quand je l'ai changer pour ceci:

   "download": {
      "default_directory": "C:\Users\rdub\Desktop",
      "directory_upgrade": true,
      "extensions_to_open": ""
   },

je l'emplacement du bureau de.

Essayez la procédure suivante:

desired_caps = {'prefs': {'download': {'default_directory': '/Users/thiagomarzagao/Desktop/downloaded_files/', "directory_upgrade": true, "extensions_to_open": ""}}}
3
répondu R Dub 2013-08-03 14:15:36

j'ai essayer toutes les anwsers dans cette question, mais il ne fonctionne pas pour mon Ubuntu 16.10. Donc j'ajoute le changement avec os.environ pour la variable XDG_DOWNLOAD_DIR. Ce qui ne marche pas, mais je pense que ça aide.

C'est:

os.environ['XDG_DOWNLOAD_DIR'] = default_download_directory

La vraiment changer que fonctionne parfaitement pour moi de la configuration, le dossier de téléchargement via la commande xdg-user-dirs-mise à jour via un appel système en exécution heure:

os.system("xdg-user-dirs-update --set DOWNLOAD " + default_download_directory)

donc, tout mon code relié à la configuration du répertoire de téléchargement est le suivant:

import os
from selenium import webdriver

default_download_directory = str(os.path.dirname(os.path.abspath(__file__))) + "/download"

os.environ['XDG_DOWNLOAD_DIR'] = default_download_directory

os.system("xdg-user-dirs-update --set DOWNLOAD " + default_download_directory)

desired_caps = {
    'prefs': {
            'download': {
                'default_directory': str(os.path.dirname(os.path.abspath(__file__))) + "/download", 
                "directory_upgrade": "true", 
                "extensions_to_open": ""
                }
              }
        }

options = webdriver.ChromeOptions() 
options.add_argument("download.default_directory=" + str(os.path.dirname(os.path.abspath(__file__))) + "/download")

browser = webdriver.Chrome(chrome_options=options, desired_capabilities=desired_caps)
1
répondu shakaran 2018-07-11 16:54:48

pour ceux qui se demandent encore pourquoi leur mise en œuvre ne fonctionne pas: vous devez mettre le chemin complet pour qu'il fonctionne. par exemple '/ Users / you / dlfolder ' ne fonctionnera pas, tandis que 'C:/Users/you/dlfolder' will.

0
répondu Camilo Fosco 2018-02-24 21:32:35