7

Я разработал сканер с ruby ​​watir-webdriver, который загружает некоторые файлы со страницы. Моя проблема в том, что когда я нажимаю, чтобы загрузить второй файл, Chrome открывает верхнюю панель, запрашивая подтверждение, что я загружаю несколько файлов с этого сайта.Отключить хром скачать несколько файлов подтверждение

Как только это используется webdriver, я не могу подтвердить загрузку. Во всяком случае, чтобы избежать этого подтверждения? Я думаю, есть ли какая-либо конфигурация, чтобы избежать этого, или если есть расширение для этого или даже если я могу нажать на подтверждение с помощью webdriver.

благодаря

+0

Получили ли вы какие-либо решения этого? – unknownbits

ответ

2

Кажется, что решение отличается для более старых и более новых версий хромированных ключей, что добавляет путаницы.

chromedriver

profile = Selenium::WebDriver::Chrome::Profile.new 
profile['download.prompt_for_download'] = false 
profile['download.default_directory'] = download_directory 

b = Watir::Browser.new :chrome, :profile => profile 

chromedriver2

prefs = { 
     'profile' => { 
      'default_content_settings' => {'multiple-automatic-downloads' => 1}, 
     } 
    } 

b = Watir::Browser.new :chrome, :prefs => prefs 

Сегодня большинство людей, вероятно, используют chromedriver2 версии и что это решение, которое должно работать нормально. Он работал нормально в моих сценариях watir, так как я не получаю сообщение: «Этот сайт пытается загрузить несколько файлов. Вы хотите разрешить это?« больше.

1

Java решение:

cap = DesiredCapabilities.chrome(); 
ChromeOptions options = new ChromeOptions(); 
Map<String, Object> prefs = new HashMap<>(); 
Map<String, Object> content_setting = new HashMap <>(); 

content_setting.put("multiple-automatic-downloads",1); 

prefs.put("download.prompt_for_download", "false"); 
prefs.put("profile.default_content_settings", content_setting); 

options.setExperimentalOption("prefs", prefs); 
cap.setCapability(ChromeOptions.CAPABILITY, options); 
3

для нового хрома (версия 46 или более поздней версии) эта опция была изменена теперь ваш хэш сусло выглядит следующим образом:

prefs = { 
    'profile' => { 
#  'default_content_settings' => {'multiple-automatic-downloads' => 1}, #for chrome version olde ~42 
     'default_content_setting_values' => {'automatic_downloads' => 1}, #for chrome newer 46 
    } 
} 

browser = Watir::Browser.new :chrome, :prefs => prefs 
+0

Это решение сработало для меня, но сломало, как я изначально обрабатывал размер окна браузера. Есть ли сайт, в котором перечислены ВСЕ изменения, которые можно сделать? – kmancusi

+0

no @kmancusi это не задокументировано – Stepan

2

Вот решение для Java - Внедрение Selenium

Мы столкнулись с трудностями при его установке, поскольку мы хотели добавить тест автоматизации для функциональности, которая загружает множество PDF-файлов на одном dow nload.

Map<String, Object> prefs = new HashMap<String, Object>(); 
//To Turns off multiple download warning 
prefs.put("profile.default_content_settings.popups", 0); 
prefs.put("profile.content_settings.pattern_pairs.*.multiple-automatic-downloads", 1); 
//Turns off download prompt 
prefs.put("download.prompt_for_download", false); 
ChromeOptions options = new ChromeOptions(); 
options.setExperimentalOptions("prefs", prefs); 
driver = new ChromeDriver(options); 

Надеюсь, что это поможет кому-то.

+0

У вас есть версия javascript? Могу ли я сделать это с клиентской стороны с помощью Javascript? Все, что мне нужно, это установить несколько автоматических загрузок »на 1 (true)! Потому что я не хочу, чтобы подсказка спрашивала его. –

+1

Нет. У меня нет javascript-версии. Не уверен, но это должно быть возможно. –

10

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

ChromeDriver createChromeDriverWithDownloadFolder(String folder) { 
    Map<String, Object> chromePrefs = new HashMap<String, Object>(); 
    chromePrefs.put("profile.default_content_settings.popups", 0); 
    chromePrefs.put("download.default_directory", folder); 
    chromePrefs.put("profile.content_settings.exceptions.automatic_downloads.*.setting", 1); 
    chromePrefs.put("download.prompt_for_download", false); 

    ChromeOptions options = new ChromeOptions(); 
    options.setExperimentalOption("prefs", chromePrefs); 
    DesiredCapabilities cap = DesiredCapabilities.chrome(); 
    cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
    cap.setCapability(ChromeOptions.CAPABILITY, options); 
    return new ChromeDriver(cap); 
} 

Кажется, как если бы эти параметры постоянно меняются.Поэтому, вот как я нашел правильное решение для моей установки:

  1. Открыть Chrome и перейти к хром: // версия/найти путь к вашему профилю
  2. В Стандартно/Preferences является JSON файл под названием Предпочтения. Откройте его и найдите automatic_downloads. В моем случае интересной части файла выглядит следующим образом:

    ... "Профиль": { "avatar_bubble_tutorial_shown": 1, "avatar_index": 0, "content_settings": { "clear_on_exit_migrated" : правда, "исключения": { "app_banner": {}, "auto_select_certificate": {}, "automatic_downloads": { "[.] локальный: 63342,": { "установка": 1 }, ...

  3. Из этого я мог бы получить, что право установка будет chromePrefs.put("profile.content_settings.exceptions.automatic_downloads.*.setting", 1);

+0

Спасибо. решение работало для меня на chrome 51 и chrome driver 2.20. –

+0

Спасибо, что это сработало для меня на последней версии браузера Chrome и версии chrome –

0

это то, что работает для меня:

HashMap<String, Object> chromePrefs = new HashMap<String, Object>(); 
chromePrefs.put("profile.default_content_settings.popups", 0); 
chromePrefs.put("profile.default_content_setting_values.automatic_downloads", 1); 
chromePrefs.put("download.prompt_for_download", false); 
ChromeOptions options = new ChromeOptions(); 
options.setExperimentalOption("prefs", chromePrefs); 
DesiredCapabilities cap = DesiredCapabilities.chrome(); 
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); 
cap.setCapability(ChromeOptions.CAPABILITY, options); 
2

По Chrome 56.0.2924.87, 17 февраля 2017 года, тем только предпочтение вам нужно установить (однако установить их для WebDriver) является:

'profile.default_content_setting_values.automatic_downloads': 1 

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

0

Я попытался сделать это на стороне загрузки страницы с использованием разметки.

<META HTTP-EQUIV="Content-Disposition" CONTENT="inline" /> 

Кажется, что он работает (он работает в этот момент, в переопределении).

Но время покажет (возможно, не повлияет на будущее ХРОМЕ, вы знаете, что я имею в виду).

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

https://www.w3.org/Protocols/HTTP/Issues/content-disposition.txt https://www.iana.org/assignments/cont-disp/cont-disp.xhtml#cont-disp-2