Как отключить 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.