Как переключить каталог загрузки с помощью селена / firefox / python? - PullRequest
0 голосов
/ 11 февраля 2020

Я знаю, что этот вопрос задавался ранее ... но я пробовал несколько подходов, и по какой-то причине все, что я загружаю из драйвера, продолжает идти в папку «Загрузки».

В основном я перехожу на веб-сайт и скачайте что-нибудь, щелкнув ссылку для скачивания, например, так:

result.click()

Это нормально скачивает файл. Но я хочу скачать его в указанный каталог c. Я пытался использовать эти подходы, чтобы изменить каталог загрузки:

driver = webdriver.Firefox()
profile = webdriver.FirefoxProfile()

driver.command_executor._commands["SET_CONTEXT"] = ("POST", "/session/$sessionId/moz/context")
driver.execute("SET_CONTEXT", {"context": "chrome"})
driver.execute_script("""
  Services.prefs.setBoolPref('browser.download.useDownloadDir', true);
  Services.prefs.setStringPref('browser.download.dir', arguments[0]);
  """, directory)

driver.execute("SET_CONTEXT", {"context": "content"})

и

profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", directory)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")

Где directory - мое желаемое местоположение.

Ни одно из этих работал ... может кто-нибудь объяснить, почему или показать мне, как на самом деле добиться этого?

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Вы инициализируете свой браузер профилем по умолчанию, так как вы не передаете ни одного аргумента профиля вашему webdriver.Firefox()

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.manager.showWhenStarting", False)
profile.set_preference("browser.download.dir", directory)
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/x-gzip")

driver = webdriver.Firefox(profile)
0 голосов
/ 11 февраля 2020

ниже опций, у меня работает нормально.

# set download options
download_path = DOWNLOADS_PATH

# 0 means to download to the desktop, 1 means to download to the default "Downloads" directory, 2 means to use the directory
firefox_options.set_preference("browser.download.folderList", 2)
firefox_options.set_preference("browser.download.dir", download_path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...