我试图无头运行我的测试,并将两个测试套件分片以并行运行它们。在我的本地计算机上,它们并行运行,但是在这种无头的设置中,它们一个接一个地运行。我正在将docker镜像用于Web驱动程序和 protractor 。

我正在使用webnicer- protractor docker镜像:https://hub.docker.com/r/webnicer/protractor-headless/
并将elgalu / selenium用于Web驱动程序。

我运行的conf.js如下所示:

exports.config = {
  //Headless
  //seleniumAddress: 'http://localhost:4444/wd/hub',
  seleniumAddress: 'http://localhost:24444/wd/hub',
  capabilities: {
    browserName: 'chrome',
    shardTestFiles: true,
    maxInstances: 2
  },
  specs: ['Suites/AccountSettingsSuite.js', 'Suites/CloneDashboardSuite.js']
}

最佳答案

现在可以在真实的Google Chrome浏览器上进行无头测试,因为Chrome> = 57,Chromedriver> = 2.29以及一些基本配置:

capabilities: {
    browserName: 'chrome',
    chromeOptions: {
        args: ['headless', 'window-size=1920,1080']
    }
}

另一个很酷的事情是,窗口大小不限于当前的显示,实际上是无头的,意思是可以根据测试需要而变大。

某些网络驱动程序功能将无法在其中使用,例如:
browser.manage().window().setPosition();
browser.manage().window().setSize();
browser.manage().window().maximize();

您将不得不识别并删除不支持的功能,除了无头的chrome对我来说非常有用。

请务必注意,例如sendKeys可能会触发此错误:
Failed: unknown error: an X display is required for keycode conversions, consider using Xvfb

如果没有实际显示或Chrome一侧没有Xvfb Protractor

更新 ChromeDriver until this is fixed修复了X display required错误

08-28 07:57