Обработка окна «Загрузить» с помощью Firefox WebDriver - PullRequest
2 голосов
/ 09 декабря 2010

Я экспериментирую с WebDriver в Firefox и хотел бы спросить, можно ли обработать окно «Загрузить» (принять или отклонить входящий запрос на загрузку)?

Например, простой фрагмент кода:

import selenium.firefox.webdriver

dr = selenium.firefox.webdriver.WebDriver()
# Firefox is showed up.

# Let's say I'd want to download python.
dr.get('http://python.org/ftp/python/3.1.3/python-3.1.3.msi')
# Download window is showed up.
# How could I accept the download request?

# As I understand, the method below should return 
# two handles but I get only main window's handle. 
handles = dr.get_window_handles()

# Seems like WebDriver cannot "see" this popup.

Я немного поэкспериментировал с этим, но пока не нашел решения.Буду очень признателен за любую подсказку.

Большое спасибо, - V

Ответы [ 3 ]

5 голосов
/ 10 декабря 2010

Одним из решений этой проблемы является изменение профиля Firefox WebDriver для автоматической загрузки некоторых типов MIME в заданный каталог.

Я не уверен, как (или если) это раскрывается в Python, но это упомянуто на странице Привязки Ruby в вики Selenium (в разделе «Настройки Tweaking Firefox»).1005 *

3 голосов
/ 06 февраля 2013

я сталкивался с этим, когда пытался загрузить файл с использованием капибары, и меня остановило приглашение на загрузку

SeleniumHQ: Selenium WebDriver

profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.dir'] = "/Downloads"
profile['browser.download.folderList'] = 2
profile['browser.helperApps.neverAsk.saveToDisk'] = "audio/wav"
driver = Selenium::WebDriver.for :firefox, :profile => profile
driver.navigate.to('http://www.address.com/file.wav')

thisпросто загружает файл в указанный каталог, без приглашения:)

другой вариант, с которым я столкнулся, был

Определение типов файлов MIME для автоматического сохранения с использованием Firefox & Watir-WebDriver

Я пробовал Watir раньше, и это оказалось очень полезным

3 голосов
/ 09 декабря 2010

Я не думаю, что для таких вещей был создан WebDriver, но я воспользуюсь этим. В WebDriver Firefox ничего не встроено, чтобы справиться с этим конкретным случаем, но есть несколько подходов, которые вы можете использовать.

Вы можете открыть FF с профилем, который использует ваш скрипт WebDriver, и отредактировать настройки, чтобы всегда сохранять файл, а не спрашивать (Параметры> Приложения> Пакет установщика Windows - установите «Сохранить файл»). Однако теперь нельзя сказать, что файл загружается из браузера, если вы не перенаправлены на страницу 404. Если нет, вы можете проверить, существует ли файл в каталоге загрузок для того же профиля (Параметры> Главная> Загрузка). Если он все еще находится в процессе загрузки, имя файла будет WhwhatFileName.ext.part

Другой вариант - использовать невизуальный драйвер HTMLUnit, перейти к ссылке на скачивание, щелкнуть по ней и получить источник страницы (будет содержимым файла). Это работает с текстовыми файлами, я не могу гарантировать, что это будет работать аналогично для двоичных файлов, и при этом я не знаю, как это будет закодировано в таком случае.

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...