docker - headless (headless) Protractor 不分片测试

标签 docker protractor headless

我正在尝试 headless (headless)运行我的测试,并将我的两个测试套件分片以并行运行它们。在我的本地计算机上,它们并行运行,但在这种 headless (headless)设置中,它们一个接一个地运行。我正在使用 Docker 镜像作为 Web 驱动程序和 Protractor 。

我正在使用 webnicer-protractor Docker 镜像:https://hub.docker.com/r/webnicer/protractor-headless/ 我正在使用 elgalu/selenium 作为网络驱动程序。

我运行的 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']
}

最佳答案

Protractor现在可以在真正的 Google Chrome 浏览器上进行 headless (headless)测试,因为 Chrome >= 57、Chromedriver >= 2.29 以及一些基本配置:

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

另一个很酷的事情是窗口大小不限于当前显示。它是真正的 headless (headless),这意味着它可以根据测试需要而变得尽可能大。

某些网络驱动程序功能在那里无法使用。例如:

browser.manage().window().setPosition();
browser.manage().window().setSize();
browser.manage().window().maximize();

您必须识别并删除不受支持的功能,除了 Google Chrome headless 对我来说效果很好之外。

需要注意的是,例如 sendKeys 可能会触发此错误:

Failed: unknown error: an X display is required for keycode conversions, consider using Xvfb

如果没有真实显示或者没有Xvfb until this was fixed在 Chrome 端。 ChromeDriver 2.31 修复了 X display required 错误.

关于docker - headless (headless) Protractor 不分片测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37030486/

相关文章:

docker - 在 Vagrant 上安装 docker 的最佳方法

docker - 使用cname而不是nameserver的IP地址运行docker容器dns标志

node.js - 为什么具有真正 headless 选项的 Chrome 59-Beta 无法与 Protractor 一起使用?

node.js - Selenium 网络驱动程序 : Connection refused (Connection refused)

Angular 4.0 e2e 测试 - 无法暂停 Protractor

google-chrome - 有什么方法可以以 headless (headless)模式启动 Google Chrome 浏览器吗?

java - Gradle 构建失败,:mergeDebugResources 中的 sun.awt.X11GraphicsEnvironment 出现 NoClassDefFoundError

docker - 在 CentOS7 中无法启动 docker daemon

docker - Gitlab CI 服务访问

Heroku CLI 登录 - 错误代码 : mfa_required