Навсегда изменить путь загрузки браузеров (Chrome, Firefox и Edge) с Python - PullRequest
1 голос
/ 26 октября 2019

Здравствуйте, чтобы переполнить стек сообщества. Я искал решение для постоянного изменения пути загрузки браузеров по умолчанию (chrome, firefox и edge) на путь, указанный в моем скрипте python. До сих пор этот скрипт Python тестировался с Chrome, который не дает желаемых результатов!

from selenium import webdriver

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

Что по сути делает этот скрипт, откройте новое окно Chrome и измените путь его загрузки на путь, указанный в скрипте! Внесенные изменения ограничиваются только этим открытым окном, которое сбрасывается при закрытии окна.

Похоже, создается некая сессия, которая, безусловно, не влияет на настройки исходного / стандартного окна!

Возможно, я не использовал правильные слова / термины для описания проблемы, пожалуйста, дайте мне знать, если моя проблема недостаточно ясна!

Редактировать: В моем случае использование селена не даетважно / необходимо, то, что я хочу, это более обобщенное решение (подключи и играй), которое при запуске (скрипт) меняет путь и не требует никакой настройки путей профиля или двоичных файлов, как в случае с селеном!

Ответы [ 2 ]

0 голосов
/ 28 октября 2019

Я воспроизвел проблему на своем компьютере. Похоже, что, изменив ChromeOptions и параметр prefs, используя селен, мы могли изменить только настройку открытого окна селена, а не настройку браузера Chrome по умолчанию.

Чтобы навсегда изменить путь загрузки браузеров по умолчанию (Chrome, Firefox и edge) на путь, указанный в моем скрипте python. Я предлагаю вам напрямую изменить путь загрузки из реестра (без использования веб-драйвера selenium).

Например, путь реестра Chrome, как показано ниже:

enter image description here

Затем мы могли бы использовать следующий код для изменения значения ключа реестра.

import winreg
key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, 'Software\Policies\Google\Chrome')
winreg.SetValueEx(key, 'DownloadDirectory', 0, winreg.REG_SZ, 'D:\TempData')
key.Close()

Результат выглядит так:

enter image description here

Для браузера Microsoft Edge папка для скачивания путь к реестру:

Computer\HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main (установите значение ключа каталога загрузки по умолчанию, например this )

или установите папки пользовательской оболочки:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

enter image description here

Затем мы можем использовать следующий код для изменениязначение ключа реестра.

import winreg
key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders')
winreg.SetValueEx(key,'{374DE290-123F-4565-9164-39C4925E467B}', 0, winreg.REG_SZ, 'D:\TempData')
key.Close()

[ Примечание ] При использовании этого метода для изменения настроек браузера лучше иметь разрешение администратора.

0 голосов
/ 26 октября 2019

Вы можете загрузить профили по умолчанию и со всеми вашими конфигурациями.
Подробные инструкции по загрузке профиля по умолчанию в Chrome можно найти здесь :

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Path") #Path to your chrome profile
w = webdriver.Chrome(executable_path="C:\\Users\\chromedriver.exe", chrome_options=options)
...