wdio chrome headless无法无休止地运行

时间:2018-11-06 04:10:49

标签: webdriver-io google-chrome-headless

无头铬对我来说似乎并不无头。我正在使用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浏览器正在启动,我可以看到网络驱动程序正在驱动测试。我有很多帖子都以这种方式进行操作,并且应该可以正常工作。我想念什么?


更新

我已经修改了要从环境变量中读取的功能。如果使用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 :(得分:1)

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

在chrome选项中具有功能。

对我来说很好。

capabilities: [

{

      browserName: 'chrome',

      chromeOptions: {

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

      },

    },

  ],

答案 1 :(得分:0)

要接受已接受的答案,在较新版本的Selenium(3.8及更高版本)中,您可能必须将chromeOptions指定为"goog:chromeOptions"