Как избежать появления всплывающего сообщения `` Этот тип файла может нанести вред вашему компьютеру '' в Chrome Autoamtion с использованием селена

Я использую селен для автоматизации заполнения сайта в хроме. Когда я загружаю файлы exe или XML, я получаю всплывающее окно «Этот тип файла может нанести вред вашему компьютеру» с вариантами сохранения и удаления. Как это программно отключить? Я реализую это на С #, я пробовал,

chromeOptions.AddUserProfilePreference("disable-popup-blocking", "true") 

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


person IT researcher    schedule 04.06.2016    source источник
comment
Возможно, вам нужно chromeOptions.AddUserProfilePreference("disable-popup-blocking", "false") вместо того, чтобы заблокировать всплывающее окно.   -  person Naman    schedule 04.06.2016


Ответы (2)


Чтобы отключить сообщение, вам необходимо установить для параметра safebrowsing.enabled значение true. Вот рабочий пример с CSharp:

var options = new ChromeOptions();
options.AddUserProfilePreference("download.default_directory", "C:\\Downloads");
options.AddUserProfilePreference("download.prompt_for_download", false);
options.AddUserProfilePreference("download.directory_upgrade", true);
options.AddUserProfilePreference("safebrowsing.enabled", true);

var driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("http://www.7-zip.org/a/7z1602.exe");

И для описания предпочтений:

https://chromium.googlesource.com/chromium/src/+/master/chrome/common/pref_names.cc

person Florent B.    schedule 04.06.2016

Вероятно, вам нужно изменить

chromeOptions.AddUserProfilePreference("disable-popup-blocking", "true")     // disables blocking the popup

to

chromeOptions.AddUserProfilePreference("disable-popup-blocking", "false")   // enables blocking the popup

вместо этого, чтобы избежать всплывающего окна.

Редактировать. Если вы застряли с содержанием вредоносного файла, вы можете попробовать установить экспериментальные параметры Chrome, используя:

Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("safebrowsing.enabled", "true");
chromeOptions.setExperimentalOption("prefs", prefs);

Цитата из документа здесь:

Установите предпочтения Chrome

ChromeOptions options = new ChromeOptions(); 
Map<String, Object> prefs = new HashMap<String, Object>(); 
prefs.put("profile.default_content_settings.popups", 0);
options.setExperimentalOption("prefs", prefs);

Дата - 4 июня 2016 г. [C #]

Просмотрел несколько ссылок и смог понять, что .Net по-прежнему не имеет setExperimentalOption настроек вместе с ChromeOptions. Итак, один из способов добавить аргумент в ChromeO / a> с указанными здесь флагами здесь будет:

chromeOptions.AddArgument("--safebrowsing-disable-download-protection");

Отключает функцию безопасного просмотра, которая проверяет URL-адрес загрузки и загружает хэш содержимого, чтобы убедиться, что содержимое не является вредоносным.

Дата - 4 июня 2016 г. [JAVA]

Документ здесь цитирует это как:

public void setExperimentalOption (имя java.lang.String, значение java.lang.Object)

Устанавливает экспериментальный вариант. Полезно для новых параметров ChromeDriver, еще не представленных через API ChromeOptions.

person Naman    schedule 04.06.2016
comment
Проблема извечная - двойные негативы! :) - person kyle_engineer; 04.06.2016
comment
@kyle_engineer Я знаю, что это старый isuue, но ни одно из предложенных решений не работает. Вы можете ответить на мой вопрос? - person IT researcher; 04.06.2016
comment
Извините, @ITresearcher, у меня нет опыта программного влияния на Chrome, и я не знаю настроек. Но я полагаю, что Google не упростит подавление предупреждений о потенциально вредоносном ПО. Это граничит с повышением безопасности, и обычно браузеры не позволяют сайту напрямую влиять на них. Вся суть взаимодействия с пользователем заключается в подтверждении риска. - person kyle_engineer; 04.06.2016
comment
Ok. Я думаю, что это возможно как-то иначе ... Есть много разработчиков, работающих с драйверами селена и хрома. - person IT researcher; 04.06.2016
comment
setExperimentalOption не является членом OpenQA.Selenium.Chrome.ChromeOptions. Я получаю эту ошибку - person IT researcher; 04.06.2016
comment
@ITresearcher - seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/ вот так, похоже, еще не открыт для ChromeOptions API - person Naman; 04.06.2016
comment
@ITresearcher: да, похоже, углубился в java, искал эквиваленты dot-net и обновил ответ. Не уверен, что это решит, но, безусловно, будет вариантом использования. - person Naman; 04.06.2016
comment
@nullpointer не работает. Я думаю, что это настройка для хрома - person IT researcher; 04.06.2016