Включить буфер обмена в автоматических тестах с помощью Protractor и webdriver - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу протестировать приложение Protractor Angular, которое обращается к системному буферу обмена с помощью буфера обмена API .Проблема заключается в том, что при выполнении теста браузер Chromium запрашивает у пользователя разрешение на доступ к буферу обмена.Я не могу закрыть это окно из теста, потому что это не элемент DOM и не окно предупреждения, и, похоже, нет никакого способа получить к нему доступ из Protractor.

разрешения буфера обмена

Я попытался автоматически дать разрешение в Chrome, в настройке транспортира.Сначала я искал ключ командной строки , который это делает, но, кажется, его не существует.

Затем я нашел способ, который, очевидно, работает, но я не знаю, стабильно ли он: установить «исключение» в профиле пользователя Chrome, используя Возможности драйвера Chrome webdriver .По сути, я добавляю следующие строки моего конфигурационного файла транспортира:

  capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
      'prefs': {
        'profile.content_settings.exceptions.clipboard': {
          'http://localhost:8000,*': {'last_modified': Date.now(), 'setting': 1}
        }
      }
    }
  }

Я нашел значение, заглянув внутрь файла Default/Preferences в моем профиле Chrome.

Теперь он работает для меня, но я не хочу использовать недокументированные функции, так как они могут быть изменены в любое время без предварительного уведомления.Знаете ли вы лучший способ сделать это?Спасибо.

1 Ответ

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

Если кто-то хочет сделать что-то подобное с C #, я адаптировал код так:

var options = new ChromeOptions();
var clipboardException = new Dictionary<string, object> {{"[*.]myurl.com,*", new Dictionary<string, object> {{"last_modified", DateTimeOffset.Now.ToUnixTimeMilliseconds()}, {"setting", 1}}}};         
options.AddUserProfilePreference("profile.content_settings.exceptions.clipboard", clipboardException);
...