wdio chrome без головы не работает без головы - PullRequest
0 голосов
/ 06 ноября 2018

Безголовый хром не кажется для меня безголовым. Я использую wdio, и у меня есть это в качестве моей конфигурации:

  capabilities: [
    {
      // maxInstances can get overwritten per capability. So if you have an in-house Selenium
      // grid with only 5 firefox instances available you can make sure that not more than
      // 5 instances get started at a time.
      maxInstances: 5,
      //
      browserName: 'chrome',
      args: ['--headless', '--disable-gpu', '--window-size=1280,800'],
      binary: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
    }
  ]

Я также выводлю, какие возможности есть до запуска браузера:

{
  "maxInstances": 5,
  "browserName": "chrome",
  "args": [
    "--headless",
    "--disable-gpu",
    "--window-size=1280,800"
  ],
  "binary": "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
}

Мой браузер Chrome запускается, и я вижу, как веб-драйвер проходит тестирование. Все, что у меня много постов, делает это таким образом, и это должно работать. Чего мне не хватает?


UPDATE

Я изменил возможности чтения из переменной окружения. Если я использую BROWSER = chrome, я вижу, что соответствующие возможности проходят, и браузер запускается в Chrome. Если я использую BROWSER = firefox, Firefox открывается, и я вижу соответствующие возможности. Если я ничего не использую, я вижу надлежащие возможности, открывается Chrome, но он не безголовый.

const CHROME = {
  browserName: 'chrome',
};

const FIREFOX = {
  browserName: 'firefox',
};

const CHROME_HEADLESS = {
  browserName: 'chrome',
  args: ['headless', 'disable-gpu']
};

function getCapabilities() {
  let browser;

  switch(process.env.BROWSER && process.env.BROWSER.toLowerCase()) {
    case 'chrome':
      browser = CHROME;
      break;
    case 'firefox':
      browser = FIREFOX;
      break;
    default:
      browser = CHROME_HEADLESS;
      break;
  }

  return [Object.assign({maxInstances: 5}, browser)];
}

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Чтобы согласиться с принятым ответом, в более новой версии Selenium (3.8 и выше) вам может потребоваться указать chromeOptions как "goog:chromeOptions"

0 голосов
/ 06 ноября 2018

https://gist.github.com/disintegrator/ff6e9341860e9b121099c71bc9381bd6

Есть возможности в ваших опциях Chrome.

У меня отлично работает.

capabilities: [

{

      browserName: 'chrome',

      chromeOptions: {

        args: ['headless', 'disable-gpu'],

      },

    },

  ],
...