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

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

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

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

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

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

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

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

2 ответа

Для тестирования предлагаю вам создать 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");

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

Я пытался найти ответ с помощью протокола W3C WebDriver, но кажется, что единственный возможный способ — отключить политики XML Edge SmartScreen с помощью реестра Windows:

      public void SetEdgeXmlDownloadPolicy()
        {
            var keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\ExemptDomainFileTypePairsFromFileTypeDownloadWarnings";
            var valueName = "AllowXmlDownload";
            var valueData = @"{""domains"": ["" * ""], ""file_extension"": ""xml""}";
            var currentValue = Registry.GetValue(keyName, valueName, string.Empty).ToString();
            if (currentValue == string.Empty || !currentValue.Contains("xml"))
                Registry.SetValue(keyName, valueName, valueData, RegistryValueKind.String);
        }

Кредиты на этот обходной путь принадлежат IndianCodeMaster.