运行 来自 JAR 文件的 docker 容器中的硒测试
Run selenium tests in docker container from JAR file
我目前有一个包含 3 个服务的 docker-compose 文件:
- 硒集线器
- chrome-节点
- 一个包含我的 selenium JUnit 测试的容器。
我想使用容器的 Dockerfile 中的命令对我的 JAR 文件(包含这些测试)进行硒测试(使用 JUnit)。我考虑过使用 selenium-server.jar 但我似乎无法弄清楚 exec 命令应该是什么(在 Dockerfile 中)。
谁能帮帮我?
我的docker-compose.yml:
version: "3"
services:
chrome:
image: selenium/node-chrome:4.1.4-20220427
shm_size: 2gb
container_name: chrome
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:4.1.4-20220427
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
application:
build: .
container_name: application
ports:
- "4447:4447"
depends_on:
- chrome
还有我的 Dockerfile:
#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
COPY src .
COPY pom.xml .
RUN mvn -f pom.xml jar:test-jar
#
# Package stage
#
FROM openjdk:11-jre-slim
COPY --from=build target/playground-project-selenium-1.0-SNAPSHOT-tests.jar /usr/local/lib/demo.jar
ADD selenium-server.jar .
ENTRYPOINT exec java -jar selenium-server.jar --ext /usr/local/lib/demo.jar:selenium/node-chrome standalone --port 4447
EXPOSE 4447
经过 trial-and-error 的一些会话后,我设法回答了我自己的问题。我创建了一个包含所有测试、资源和依赖项的 so-called Fat-JAR(使用 maven 程序集插件),我使用 JUnit 4 和 org.junit.runner.JUnitCore
class 到 运行一个测试套件。
现在,我的 selenium UI 测试完全 运行 在 Docker 容器中使用 selenium hub 和 chrome 驱动程序在单独的容器中。
我目前有一个包含 3 个服务的 docker-compose 文件:
- 硒集线器
- chrome-节点
- 一个包含我的 selenium JUnit 测试的容器。
我想使用容器的 Dockerfile 中的命令对我的 JAR 文件(包含这些测试)进行硒测试(使用 JUnit)。我考虑过使用 selenium-server.jar 但我似乎无法弄清楚 exec 命令应该是什么(在 Dockerfile 中)。
谁能帮帮我?
我的docker-compose.yml:
version: "3"
services:
chrome:
image: selenium/node-chrome:4.1.4-20220427
shm_size: 2gb
container_name: chrome
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:4.1.4-20220427
container_name: selenium-hub
ports:
- "4442:4442"
- "4443:4443"
- "4444:4444"
application:
build: .
container_name: application
ports:
- "4447:4447"
depends_on:
- chrome
还有我的 Dockerfile:
#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
COPY src .
COPY pom.xml .
RUN mvn -f pom.xml jar:test-jar
#
# Package stage
#
FROM openjdk:11-jre-slim
COPY --from=build target/playground-project-selenium-1.0-SNAPSHOT-tests.jar /usr/local/lib/demo.jar
ADD selenium-server.jar .
ENTRYPOINT exec java -jar selenium-server.jar --ext /usr/local/lib/demo.jar:selenium/node-chrome standalone --port 4447
EXPOSE 4447
经过 trial-and-error 的一些会话后,我设法回答了我自己的问题。我创建了一个包含所有测试、资源和依赖项的 so-called Fat-JAR(使用 maven 程序集插件),我使用 JUnit 4 和 org.junit.runner.JUnitCore
class 到 运行一个测试套件。
现在,我的 selenium UI 测试完全 运行 在 Docker 容器中使用 selenium hub 和 chrome 驱动程序在单独的容器中。