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

Загрузка файла в указанное место с помощью Selenium и python

Хорошо, пока у меня есть моя программа, идущая на веб-сайт, на котором я хочу загрузить ссылку и выбрав ее, затем появится диалоговое окно firefox, и я не знаю, что делать. Я хочу сохранить этот файл в папке на моем рабочем столе. Я использую это для ночной сборки, поэтому мне нужно, чтобы это работало. Пожалуйста, помогите.

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

driver = web driver.Firefox()
driver.implicitly_wait(5)
driver.get("Name of web site I'm grabbing from")
driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]".click()
4b9b3361

Ответ 1

Вам нужно сделать Firefox автоматически сохранить этот тип файла.

Это может быть достигнуто установкой browser.helperApps.neverAsk.saveToDisk предпочтения:

from selenium import webdriver

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

driver = webdriver.Firefox(firefox_profile=profile)
driver.get("Name of web site I'm grabbing from")
driver.find_element_by_xpath("//a[contains(text(), 'DEV.tgz')]").click()

Больше объяснений:

  • browser.download.folderList указывает, что не использовать каталог Downloads по умолчанию
  • browser.download.manager.showWhenStarting показывает ход выполнения загрузки
  • browser.download.dir устанавливает каталог для загрузки
  • browser.helperApps.neverAsk.saveToDisk сообщает, что Firefox автоматически загружает файлы выбранного mime-types

Вы можете просмотреть все эти настройки в about:config в браузере. Здесь также доступна очень подробная страница документации: О файле: config entries.

Кроме того, вместо использования подхода xpath я бы использовал find_element_by_partial_link_text():

driver.find_element_by_partial_link_text("DEV.tgz").click()

Также смотрите:

Ответ 2

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