当前位置: 首页 > 知识库问答 >
问题:

nightwatchjs并行模式selenium hub docker compose

芮歌者
2023-03-14

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

但是,现在当我运行docker-composrun--rm nightwatch时,使用以下代码,selenium服务器将以并行模式启动,并且将启动多个子进程,但是,只有第一个子进程将执行。然后其他子进程将获得从selenium服务器检索新会话时出错。连接被拒绝!selenium服务器启动了吗?我是否缺少一些东西来让nightwatchjs测试在不超时的情况下并行运行?

守夜。配置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撰写。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

Dockerfile文件

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

共有1个答案

松铭
2023-03-14

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源代码发现了这一点。

 类似资料:
  • 从流javadoc: 顺序流/并行流之间没有功能上的区别。输出从不受执行模式影响。 由于性能提高,在给定适当的核数和问题大小以证明开销合理的情况下,并行流始终是优选的。 我们希望编写一次代码并在任何地方运行,而不必关心硬件(毕竟这是Java) 假设这些假设是有效的(有一点元假设没有问题),那么在API中公开执行模式有什么价值呢? 看起来您应该能够声明一个,顺序/并行执行的选择应该在下面的一个层中自

  • 飞行模式切断来自 A370 的所有无线通讯。虽然您仍可使用它,但您不能利用 Polar Flow 移动应用程式同步数据,也不能将它与任何无线配件一起使用。 打开飞行模式 进入设置 。 轻击飞行图标 ,将显示“飞行模式启用”并且该图标将变绿。飞行图标出现在时间视图中。 ​关闭飞行模式 进入设置。 点击图标,将显示“飞行模式关闭”。

  • 在飞行模式中,M600 的蓝牙与 Wi-Fi 连接关闭。您仍可使用此智能手表的某些基本功能,例如,您可使用 Polar 应用程式以及基于手腕的心率监测功能进行训练。但您不能利用 Polar Flow 移动应用程式同步数据,也不能将 M600 与任何无线配件一起使用。 打开/关闭飞行模式 请确保您的 M600 显示屏处于启动状态且您当前处于主屏幕上。 从屏幕顶端向下滑动进入 Quick settin

  • 可停用PS Vita所有网络功能。 轻触方格,即可启用设定。 警告 无线电波可能会影响电子设备或医疗设备(例如心律调整器),可能会导致这些设备故障或人身受伤。 若您有使用心律调整器或其它医疗设备,请在使用网络功能前,先询问您的主治医生或您使用医疗设备的制造厂商。 请勿在下列场所使用网络功能。 禁止使用无线网络的场所,如:医院或飞机上。在该场所使用主机时,请遵守其规定 接近火灾警报器、自动门或其它类

  • 我有以下情况 有2个虚拟机正在向Kafka发送流,CEP引擎正在接收这些流,当单个流满足特定条件时,会生成警告。 目前,CEP正在检查两条流上的相同情况(当心率 但我想对这两个流使用不同的条件。例如,如果 如何实现这一点?我需要在同一环境中创建多个流环境或多个模式吗?

  • 我不明白为什么first方法在并行模式下是有缺陷的,而且书中没有解释。 拜托,解释一下。