C # selenium chromedriver нажмите Разрешить хранить файлы на этом устройстве - PullRequest
0 голосов
/ 19 февраля 2019

enter image description here

Привет.Как я могу нажать на кнопку «Разрешить»?Я действительно не могу найти никакого решения в интернете.Я не хочу использовать хуки с ++ или симулировать щелчки мышью по координатам.Есть ли хороший способ разрешить это уведомление?

new ChromeOptions.AddUserProfilePreference("profile.default_content_setting_values.automatic_downloads", 2);

не помогает

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019
        var chromeOptions = new ChromeOptions();
        var downloadDirectory = @"C:\Users\";



        chromeOptions.AddUserProfilePreference("download.default_directory", downloadDirectory);
        chromeOptions.AddUserProfilePreference("download.prompt_for_download", false);
        chromeOptions.AddUserProfilePreference("disable-popup-blocking", "true");


        chromeOptions.AddUserProfilePreference("profile.default_content_setting_values.automatic_downloads", 1);

        IWebDriver _driver = new ChromeDriver(chromeOptions);

Можете попробовать с этим?

0 голосов
/ 22 февраля 2019

Найдены два решения:

1) Спасибо за ответ @Floren: C # selenium chromedriver нажмите Разрешить хранить файлы на этом устройстве

Есть аргументдля хрома --unlimited-storage

Код исходного кода хрома:

// Overrides per-origin quota settings to unlimited storage for any
// apps/origins.  This should be used only for testing purpose.
const char kUnlimitedStorage[] = "unlimited-storage";



# Prevent the infobar that shows up when requesting filesystem quota.
    '--unlimited-storage',

C # использование:

var chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("--unlimited-storage");
var driver = new ChromeDriver(chromeOptions);

2) @ Ответ Симона Мурье C # selenium chromedriver нажмите Разрешить хранить файлы на этом устройстве

Нажмите кнопку Разрешить с помощью .NET UIAutomation

var andCondition = new AndCondition(new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button), new PropertyCondition(AutomationElement.NameProperty, "Allow"));

AutomationElement chromeWindow = AutomationElement.FromHandle(_windowPointer); // IntPtr type
var buttonsFound = chromeWindow.FindAll(TreeScope.Descendants,  andCondition);
if (buttonsFound.Count > 0)
{
   var button = buttonsFound[0];
   var clickPattern = button.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
   clickPattern.Invoke();
}
0 голосов
/ 21 февраля 2019

Вы не можете, это диалог на уровне ОС, а не что-то внутри DOM.

Способ обойти это - использовать нужные возможности, чтобы настроить Chrome, чтобы он не отображался.

Я собираюсь предложить

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("download.prompt_for_download", 0);
options.AddUserProfilePreference("settings.labs.advanced_filesystem", 1);

Другие потенциальные команды для добавления параметров, если AddUserProfilePreference не работает, будут:

  • AddLocalStatePreference
  • AddAdditionalChromeOption
  • AddAdditionalCapability

Для получения более подробной информации о желаемых возможностях и хроме смотрите:

...