E/runner - 无法启动 WebDriver 会话

E/runner - Unable to start a WebDriver session

我已经为 运行 存储在 public 存储库中的一些量角器测试创建了一个 docker-compose.yml 文件。 yml文件中创建了几个容器:

Docker-撰写文件是:

version: '2.4'
services:

  shared_repo:
    image: library/postgres:13.2-alpine
    container_name: shared_repo
    command: bash -c "apk add git && sleep 5s && git clone -b main https://github.com/AlfredoBazo/opwDocker.git && mv /opwDocker /shared_repository && echo "TEST" && sleep 100s"
    ports:
    - 1603:1603
    volumes:
    - shared_repository:/e2e-shared

  selenium-hub:
    image: selenium/hub
    container_name: selenium-hub
    ports:
    - "4444:4444"

  chrome:
    image: selenium/node-chrome-debug
    container_name: chrome
    volumes:
    - /dev/shm:/dev/shm
    ports:
    - "5900:5900"
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
      - CHROME_DRIVER_VERSION=chromedriver_81.0.4044.69

  protractor:
    image: node:12.14
    container_name: protractor
    working_dir: /e2e/
    volumes:
      - .:/e2e
    ports:
    - "9229:9229"
    command: bash -c "npm install && npm i protractor && ./node_modules/protractor/bin/webdriver-manager update && ls -haltr && node node_modules/protractor/bin/protractor e2e/protractor.conf.js --cucumberOpts.tags=@docker"
    depends_on:
    - selenium-hub
    - chrome

volumes:
  shared_repository:

执行docker-compose up时出现错误提示:

[09:09:18] I/launcher - Running 1 instances of WebDriver protractor
| [09:09:18] I/direct - Using ChromeDriver directly... protractor
| [09:09:18] E/runner - Unable to start a WebDriver session. protractor | [09:09:18] E/launcher - Error: Error: Server terminated early with status 127 protractor | at /e2e/node_modules/selenium-webdriver/remote/index.js:252:52 protractor | at processTicksAndRejections (internal/process/task_queues.js:94:5) protractor | [09:09:18] E/launcher - Process exited with error code 100

这个项目有一些误解点,但我认为主要问题是你使用的是本地Webdriver,而不是你提出的Selenium Hub实例。我认为我们可以将 docker-compose.yaml 文件简化为:

version: '2.4'
services:

  selenium-hub:
    image: selenium/hub
    container_name: selenium-hub
    ports:
    - "4444:4444"

  chrome:
    image: selenium/node-chrome-debug
    container_name: chrome
    volumes:
    - /dev/shm:/dev/shm
    ports:
    - "5900:5900"
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
      - CHROME_DRIVER_VERSION=chromedriver_81.0.4044.69

  protractor:
    image: node:12.14
    container_name: protractor
    ports:
    - "9229:9229"
    command: bash -c "apt update && apt install -y git && git clone -b main https://github.com/AlfredoBazo/opwDocker.git && cd opwDocker && npm install && node node_modules/protractor/bin/protractor e2e-tests/protractor.conf.js --cucumberOpts.tags=@docker"
    depends_on:
    - selenium-hub
    - chrome

并且您需要修改 protractor.conf.js 添加行:

seleniumAddress: 'http://selenium-hub:4444/wd/hub'

并删除下一个:

directConnect: true

无论如何,我会在 this Pull Request

中包含一些其他必要的更改,以实现 运行