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)
Ответы
Ответ 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
Использование аргумента загрузки по умолчанию переопределяет файл сохранения в целом и фактически выводит его на принтер