Подтвердить что ты не робот

Selenium Webdriver в Python - изменение каталога загрузки файлов в настройках Chrome

Я использую Selenium Webdriver (в Python) для автоматизации загрузки тысяч файлов. Я хочу программно установить папку загрузки Chrome. После прочтения этого я пробовал это:

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)

Нехорошо. Загрузки по-прежнему идут в папку загрузки по умолчанию ( "/Users/thiagomarzagao/Downloads" ).

Любые мысли?

(Python 2.7.5, Selenium 2.2.0, Chromedriver 2.1.210398, Mac OS X 10.6.8)

4b9b3361

Ответ 1

Следующие работали для меня:

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)

Источник: https://sites.google.com/a/chromium.org/chromedriver/capabilities

Ответ 2

Если у кого-то все еще есть проблемы, и вышеупомянутые решения не работают, я обнаружил добавление следующего косой черты ('\') в мой путь загрузки.

Шахта выглядела так:

    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)

Ответ 3

Я думаю, вам также нужно

"directory_upgrade": true

Используя словарь непосредственно в файле Chrome Prefrences, при установке локальных окон chrome версии 28.0.1500.95 m со следующими параметрами загрузки:

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

Я получаю местоположение по умолчанию против рабочего стола. Когда я изменяю его на это:

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

Я получаю расположение на рабочем столе.

Попробуйте следующее:

desired_caps = {'prefs': {'download': {'default_directory': '/Users/thiagomarzagao/Desktop/downloaded_files/', "directory_upgrade": true, "extensions_to_open": ""}}}

Ответ 4

Я пробую все ответы в этом вопросе, но у меня это не работает в Ubuntu 16.10. Поэтому я добавляю изменение в os.environ для переменной XDG_DOWNLOAD_DIR. Что не работает, но я думаю, что это помогает.

То есть:

os.environ['XDG_DOWNLOAD_DIR'] = default_download_directory

Реальное изменение, которое отлично работает для меня, это настройка папки загрузки с помощью команды xdg-user-dirs-update через системный вызов во время выполнения:

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

Итак, весь мой код, связанный с установкой каталога загрузки, выглядит следующим образом:

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)

Ответ 5

Для всех, кто до сих пор задается вопросом, почему их реализация не работает: вы должны установить ПОЛНЫЙ ПУТЬ, чтобы он заработал. например, '/Users/you/dlfolder' не будет работать, в то время как 'C: /Users/you/dlfolder' будет работать.

Ответ 6

Использование аргумента загрузки по умолчанию переопределяет файл сохранения в целом и фактически выводит его на принтер