WebDriverManager 无法使用 SeleniumGrid 和 GitLab 在 Docker 容器中创建 Chrome 对象

WebDriverManager unable to create Chrome Object in Docker container with SeleniumGrid and GitLab

提问人:Anurag 提问时间:9/13/2023 最后编辑:Anurag 更新时间:9/13/2023 访问量:68

问:

我正在尝试使用 Docker Container 和 Selenium Grid 配置在 GitLab CICD 管道中运行我的测试。 对于 Selenium 驱动程序初始化,我使用的是 WebDriverManger 我可以看到所有图像都在 gitlab 运行器日志中正确拉取。 但是,一旦 WebDriverManager 尝试连接到 chromedriver,我就看到以下错误

ChromeDriver 已成功启动。 [1694602699.114][SEVERE]:bind() 失败:无法分配请求的地址 (99) 2023 年 9 月 13 日上午 10:58:19 org.openqa.selenium.remote.ProtocolHandshake createSession 信息:检测到的方言:W3C [错误]测试运行: 3, 失败: 0, 错误: 2, 跳过: 0, 经过的时间: 309.248 秒 <<< 失败!- 在 作为用户,我想测试登录功能 [错误]作为用户,我想测试登录功能。验证登录页面的主页功能 经过的时间:300.118 秒<<<错误! io.github.bonigarcia.wdm.config.WebDriverManagerException:为 Chrome 创建 WebDriver 对象时出错 原因:io.github.bonigarcia.wdm.config.WebDriverManagerException:创建 WebDriver 对象超时 30 秒 原因:org.openqa.selenium.SessionNotCreatedException: 无法启动新会话。新会话请求超时 主机信息: host: '48340880bd05', ip: '172.19.0.2'

我的代码用于初始化 chrome 驱动程序

WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
options.addArguments("--no-sandbox","--disable-dev-shm-usage");
driver = WebDriverManager.chromedriver()
.capabilities(options)
.remoteAddress("http://selenium-hub:4444")
.create();

.gitlab-ci.yml 文件

stages:

- "test"

variables:
SELENIUM_SERVER_NAME: selenium-hub
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 chrome chrome2
\- sleep 10
\- echo "before script"
\- echo ${SELENIUM_SERVER_URL}
\- echo docker ps -a
\- docker-compose run ping curl ${SELENIUM_SERVER_URL}/status
script:
\- docker-compose run tests mvn clean test

artifacts:
when: always
name: "report"
paths:
\- target/surefire-reports/\*\*
expire_in: 7 days

docker-compose 文件

version: "3"
services:
chrome:
image: selenium/node-chrome:latest
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
\- JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=

chrome2:
image: selenium/node-chrome:latest
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
\- JAVA_OPTS=-Dwebdriver.chrome.whitelistedIps=

selenium-hub:
image: selenium/hub:latest
container_name: ${SELENIUM_SERVER_NAME}
ports:
\- "4442:4442"
\- "4443:4443"
\- "4444:4444"

ping:
image: alpine/curl

tests:
\# image: maven:3.6.3-jdk-11
image: markhobson/maven-chrome:jdk-11
working_dir: /app
volumes:
\- ${CI_PROJECT_DIR}:/app
environment:
ENVIRONMENT: remote
SELENIUM_SERVER_URL: ${SELENIUM_SERVER_URL}
docker gitlab-ci selenium-grid webdriver-manager

评论


答: 暂无答案