javascript - nightwatchjs 并行模式 selenium hub docker compose

标签 javascript selenium selenium-webdriver nightwatch.js

我正在尝试使用 Selenium Hub 在 Docker 中使用 nightwatchjs 并行运行测试。我能够在没有 Selenium Hub 的情况下在 Docker 中并行运行测试,但是,一些子进程会超时导致多次重试。结果非常不一致。我希望使用 Selenium Hub 或类似的东西来消除超时和重试,以便测试结果更加一致、稳定并且不会超时。

但是,现在当我运行 docker-compose run --rm nightwatch 时,使用以下代码,selenium 服务器将以并行模式启动,并且将启动多个子进程,但是,只有第一个将执行。然后其他子进程将得到 Error retrieving a new session from the selenium server。连接被拒绝! selenium 服务器启动了吗? 我是否缺少让 nightwatchjs 测试并行运行而不会超时的东西?

守夜人.conf.js

module.exports = {
  src_folders: ['tests'],
  output_folder: 'reports',
  custom_commands_path: '',
  custom_assertions_path: '',
  page_objects_path: 'page_objects',
  test_workers: true,
  live_output: true,
  detailed_output: true,

  selenium: {
    start_process: true,
    server_path: './bin/selenium-server-standalone-3.0.1.jar',
    log_path: '',
    host: '127.0.0.1',
    port: 4444,
    cli_args: {
      'webdriver.chrome.driver' : './node_modules/chromedriver/bin/chromedriver'
    }
  },

  test_settings: {
    default: {
    launch_url: 'https://example.com',
    selenium_port: 4444,
    selenium_host: 'hub',
    silent: true,
    screenshots: {
      'enabled': false,
      'path': ''
    },
    desiredCapabilities: {
      browserName: 'chrome',
      javascriptEnabled: true,
      acceptSslCerts: true,
      chromeOptions: {
        args: [
          '--window-size=1024,768',
          '--no-sandbox'
        ]
      }
    },
    globals: {
      waitForConditionTimeout: 20000,
      asyncHookTimeout: 70000
    }
  }
};

docker-compose.yml

version: '2'

services:
  nightwatch:
    build:
      context: .
    command: /bin/sh -c "node ./node_modules/nightwatch/bin/nightwatch"
    links:
      - chrome
      - hub
    volumes:
      - .:/opt/nightwatch
  chrome:
    environment:
      VIRTUAL_HOST: node.chrome.docker
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
    image: selenium/node-chrome:3.1.0-astatine
    links:
      - hub
  hub:
    ports:
      - 4444:4444
    image: selenium/hub:3.1.0-astatine

码头文件

FROM java:8-jre

## Node.js setup
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs

RUN npm config set spin false

WORKDIR /app

COPY . ./

RUN npm install

最佳答案

docker 节点图像配置为仅运行一个浏览器实例。您可以通过覆盖环境变量来更改它,如下所示:

  chrome:
    environment:
      VIRTUAL_HOST: node.chrome.docker
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_INSTANCES: 5
      NODE_MAX_SESSION: 5
    image: selenium/node-chrome:3.1.0-astatine
    links:
      - hub

如果您有兴趣,我是通过查看 Dockerfile source 发现的.

关于javascript - nightwatchjs 并行模式 selenium hub docker compose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42635853/

相关文章:

javascript - 在 AngularJS 中使用过滤器 onclick 进行毫米 - 英寸转换器

javascript - 比较两个数组并合并而不重复

java - Selenium在多个浏览器上并行测试(JAVA)

c# - 如何使用 CI(持续集成)运行 Selenium 测试?

python - 使用 Selenium 在 Instagram 的搜索栏中输入内容

javascript - $(document).ready 在 JavaScript 中

javascript - 有漏斗图而不是 Highcharts 的图表库吗?

java - 使用 TestNG.xml 文件并行执行 2 个测试用例

python - 定期从我的 Dropbox 帐户下载文件

selenium - 在页面上停留 30 分钟,然后执行操作(Webdriver-Java)