WebdriverIO - Как добавлять собственные заголовки ко всем запросам

Мне нужно добавить настраиваемые заголовки ко всем запросам, чтобы получить доступ к веб-приложению, которое обычно скрыто за корпоративным прокси и vpn, и иметь возможность запускать тесты E2E. В качестве инструмента автоматизации мы используем WebdriverIO. До сих пор я пытался настроить собственный заголовок в файле wdio.conf.js, следуя официальной документации wdio (https://webdriver.io/docs/options/), и добавил параметр заголовков внутри возможностей в моем файле конфигурации. К сожалению, это не работает, и я все еще не могу подключиться к нашему веб-приложению. Кто-нибудь пробовал добавлять собственные заголовки в файл wdio.config.js и запускать тесты E2E? Содержимое моего файла wdio.config.js следующее:

              exports.config = {
      runner: 'local',
    
      specs: [
        './src/specs/**/login.spec.ts',
      ],
      // Patterns to exclude.
      exclude: [
        // 'path/to/excluded/files'
      ],
    
      maxInstances: 10,
    
      capabilities: [
        {
          maxInstances: 5,
          browserName: 'chrome',
          acceptInsecureCerts: true,
    
          headers: {
            'REQUIRED-HEADER-KEY': 'HEADER-VALUE'
          },
    
          'goog:chromeOptions': {
            'excludeSwitches': [
              'enable-automation'
            ],
            prefs: {
              'profile.managed_default_content_settings.notifications': 1, 
              'plugins.always_open_pdf_externally': true, 
              'download': {
                'prompt_for_download': false, 
                'default_directory': process.cwd() + '/tmp'
              }
            },
            args: [
              '--disable-gpu',
              '--window-size=1920,1080',
              '--no-sandbox',
              '--disable-dev-shm-usage',
              '--start-maximized',
            ],
          },
        },
      ],
}

2 ответа

В настоящее время это невозможно сделать, см. Webdriverio / issues / 6361

Но вы можете сделать это с помощью modheader_selenium :

npm install chrome-modheader

      const chromeModheader = require('chrome-modheader');
exports.config = {
...
    capabilities: [{
        browserName: 'chrome',
        chromeOptions: {
            extensions: [chromeModheader.getExtension()],
        }
    }],
...
    before: function (capabilities, specs) {
        browser.url(chromeModheader.getAddHeaderUrl('YOUR_HEADER', 'YOUR_HEADER_VALUE'));
    },
...
}

Пожалуйста, посмотрите, что может быть не так? Спасибо

      const { config } = require('../wdio.conf');
const chromeModheader = require('chrome-modheader');
config.capabilities = [{
maxInstances: 1,
browserName: 'chrome',
'goog:chromeOptions': {
extensions: [chromeModheader.getExtension()],
enter code here
'excludeSwitches': [
  'enable-automation',
  '--disable-infobars',
  '--disable-blink-features=AutomationControlled',
  '--disable-dev-shm-usage',
  '--no-sandbox',
],

before: function (capabilities, specs) {
  browser.url(chromeModheader.getAddHeaderUrl('X-Captcha-Override', 'disable'));
},
}
}];
exports.config = config;

Запрос не выполнен со статусом 500 из-за того, что сеанс не создан: не удалось начать новый сеанс. Ошибка при создании сеанса со службой драйверов. Останов службы драйвера: не удалось начать новый сеанс. Код ответа 500. Сообщение: сеанс не создан: невозможно обработать расширение № 1[0-0] из-за неизвестной ошибки: невозможно декодировать base64 [0-0] Информация о сборке: версия: «4.4.0», ревизия: «e5c75ed026a»

Другие вопросы по тегам