首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GitLab CI中运行Selenium Grid 4网络?

如何在GitLab CI中运行Selenium Grid 4网络?
EN

Stack Overflow用户
提问于 2022-05-01 21:30:06
回答 1查看 577关注 0票数 2

我想在GitLab中运行selenum网格容器。它们将是:一个selenium集线器和两个由共享网络连接的铬节点容器。我知道如何使用yaml文件部署这些容器,但我不知道如何在gitlab中启动这些容器。

理想的情况下,三个编码程序将在pipleine中启动,然后我将执行一个脚本,该脚本将使用网格.运行一些硒测试。

这里有我的yml文件,它将在本地启动selenium网格:

代码语言:javascript
复制
version: '3.7'

services:    
  selenium-1:
    image: selenium/node-chrome:latest
    shm_size: '2gb'
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  selenium-2:
    image: selenium/node-chrome:latest
    shm_size: '2gb'
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443

  selenium-hub:
    image: selenium/hub:latest
    expose:
      - 4444

下面是启动selenium测试的脚本:

代码语言:javascript
复制
#!/usr/bin/env bash
set -e


python -m pytest

到目前为止我的..gitlab ci.yml:

代码语言:javascript
复制
stages:
  - e2e

e2e:
  stage: e2e
  interruptible: false
  services:
    - selenium/hub:latest
    - selenium/node-chrome:latest
  script:
    - bash run_test_page.sh
EN

回答 1

Stack Overflow用户

发布于 2022-07-30 03:34:42

我基本上使用丁丁来运行撰写文件。

在下面的片段中,我试图提到基本的部分,您可以在这里看到一个完整的项目示例

而且,我使用的是java和maven,在您的例子中,python不需要太多的更改。

码头工- gitlab管道使用的构筑物

代码语言:javascript
复制
version: "3"

services:
  selenium-chrome-01: &selenium-chrome
    image: selenium/node-chrome:4.3.0-20220726
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      SE_EVENT_BUS_HOST: ${SELENIUM_SERVER_NAME}
      SE_EVENT_BUS_PUBLISH_PORT: 4442
      SE_EVENT_BUS_SUBSCRIBE_PORT: 4443

  selenium-chrome-02:
    <<: *selenium-chrome

  selenium-hub:
    image: selenium/hub:4.3.0-20220726
    shm_size: 2gb
    container_name: ${SELENIUM_SERVER_NAME}

  ping:
    image: alpine/curl

  tests:
    image: openjdk:11
    working_dir: /app
    volumes:
      - ${CI_PROJECT_DIR}:/app
    environment:
      ENVIRONMENT: remote
      SELENIUM_SERVER_URL: ${SELENIUM_SERVER_URL}

复合文件有4个容器-两个工作节点、一个集线器、一个检查集线器状态的容器,以及一个运行测试的容器。

gitlab管道文件-

代码语言:javascript
复制
stages:
  - test

variables:
  SELENIUM_SERVER_NAME: selenium
  SELENIUM_SERVER_URL: http://${SELENIUM_SERVER_NAME}:4444
  DOCKER_HOST: tcp://docker:2375

services:
  - docker:20.10.16-dind

test:
  stage: test
  image: docker/compose
  before_script:
    - docker-compose up -d selenium-hub selenium-chrome-01 selenium-chrome-02
    - sleep 10
    - docker-compose run ping curl ${SELENIUM_SERVER_URL}/status
  script:
    - docker-compose run tests ./mvnw test -Dtest=TestClass

我认为 关于gitlab runner的配置,您可以以services的形式运行selenium网格,我觉得这是一个更好的解决方案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72080548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档