Как отключить SmartScreen (безопасный просмотр в краю) на C # Selenium Edge Chromium?

Я пытаюсь запустить несколько сквозных тестов selenium C # в браузере Edge Chromium. Один из тестов выполняет проверку загрузки, в основном он загружает XML-файл и проверяет, существует ли он в загруженном месте.

Я использую Microsoft.Edge.SeleniumTools EdgeOptions для создания параметров для EdgeDriver.

Но проблема в том, что Edge блокирует загрузки.

1

Пробовал разные вещи, но ни один из них не работал.

Эту же проблему можно решить в Chrome, отключив безопасный просмотр в UserProfilePreferences в ChromeOptions.

Я точно знаю, что SmartScreen выполняет блокировку, если это так, есть ли какие-либо предпочтения профиля, которые я могу использовать для отключения SmartScreen?

Или любой другой обходной путь для принудительной загрузки без блокировки был бы очень полезным.




Ответы (1)


В целях тестирования я предлагаю вам создать HashMap объектов и попытаться установить параметры Edge, как показано ниже.

static void Main(string[] args)
 {
            HashMap<String, Object> edgePrefs = new HashMap<String, Object>();
            edgePrefs.put("profile.default_content_settings.popups", 0);
            edgePrefs.put("profile.default_content_setting_values.notifications", 2);       
            edgePrefs.put("profile.default_content_setting_values.automatic_downloads" , 1);        
            edgePrefs.put("profile.content_settings.pattern_pairs.*,*.multiple-automatic-downloads",1);

            var options = new EdgeOptions();
            egdeOptions.setExperimentalOption("prefs",edgePrefs);
            options.UseChromium = true;
            options.BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";   // Here add the Edge browser exe path.
            var driver = new EdgeDriver(@"Edge_driver_path_here...", options); // Here modify the selenium web driver path.
            driver.Navigate().GoToUrl("http://website_URL_here..."); 
            driver.FindElementById("lnk1").Click();
          
}

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

options.AddUserProfilePreference("download.default_directory", @"D://Folder1");

Посмотрите, поможет ли загрузка файла.

person Deepak-MSFT    schedule 20.04.2021
comment
вы знаете, какие настройки профиля пользователя доступны для Edge Chromium? Из любого источника, который я могу найти, можно найти приемлемые настройки профиля пользователя? - person stranger; 21.04.2021
comment
Подходит ли вам приведенный выше пример кода? Я пытаюсь найти Edge pref. list, но не получил информации специально для браузера Edge. Вы можете попробовать обратиться к этим двум спискам предпочтений для Chromium. Profile_pref1, Profile_pref2. Общие настройки могут работать для браузера Edge. Edge может не полностью поддерживать все настройки, которые могут быть установлены из-за потенциальных внутренних различий между Chromium и Edge. - person Deepak-MSFT; 21.04.2021
comment
Я пробовал, но не могу найти setExperimentalOption на EdgeOptions из Selenium Tools. Я работаю над версией Selenium 3.x, но пробовали ли вы использовать приведенный выше код на Selenium 4? Для справки я использую EdgeOptions из github.com/microsoft/edge-selenium-tools - person stranger; 21.04.2021
comment
Просто в целях тестирования, не могли бы вы зайти в Edge: // settings / privacy в браузере Edge и попытаться отключить смарт-экран Microsoft Defender. Затем попробуйте запустить свой код. Посмотрите, позволяет ли он скачивать файл. - person Deepak-MSFT; 26.04.2021
comment
Я сделал это, но проблема в том, что когда селен открывает новый браузер Edge для тестирования, разрешение снова включается :( - person stranger; 27.04.2021
comment
Я предлагаю вам попробовать запустить браузер Edge с конкретным профилем, в котором вы отключили смарт-экран Microsoft Defender. Таким образом, он будет отключен, когда вы запустите браузер Edge с помощью Selenium. - person Deepak-MSFT; 27.04.2021