【发布时间】:2022-01-14 17:41:56
【问题描述】:
我有一个使用 WebDriverManager 的 Geb 和 Spock Maven 项目(使用版本 5.0.4-SNAPSHOT 和 selenium 3.141.159)。我成功地使用本地 Maven 的 docker 选项中的浏览器运行测试,但尝试在 Maven 映像中运行时失败:
docker run -t -v "$PWD":/usr/src -w /usr/src -v /mnt/c/m2repo:/m2repo maven:3.8.4-jdk-8 mvn test -B -e -Dmaven.repo.local=/m2repo -Dgeb.env=chrome_docker -Dtest=LoginDummySpec
带日志:
...
17:29:19 [DEBUG] - DockerHubService - Getting browser image list from Docker Hub
17:29:20 [DEBUG] - DockerService - The latest version of Chrome in Docker Hub is 97.0
17:29:20 [INFO ] - DockerService - Pulling Docker image selenoid/vnc:chrome_97.0 (this might take some time, but only the first time)
17:29:21 [ERROR] - ResultCallbackTemplate - Error during callback
java.lang.RuntimeException: java.io.IOException: com.sun.jna.LastErrorException: [2] No such file or directory
at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl.execute(ApacheDockerHttpClientImpl.java:187)
at com.github.dockerjava.httpclient5.ApacheDockerHttpClient.execute(ApacheDockerHttpClient.java:9)
at com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:228)
at com.github.dockerjava.core.DefaultInvocationBuilder.lambda$executeAndStream$1(DefaultInvocationBuilder.java:269)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: com.sun.jna.LastErrorException: [2] No such file or directory
at com.github.dockerjava.transport.DomainSocket.<init>(DomainSocket.java:63)
at com.github.dockerjava.transport.LinuxDomainSocket.<init>(LinuxDomainSocket.java:41)
at com.github.dockerjava.transport.DomainSocket.get(DomainSocket.java:140)
at com.github.dockerjava.transport.UnixSocket.get(UnixSocket.java:27)
at com.github.dockerjava.httpclient5.ApacheDockerHttpClientImpl$2.createSocket(ApacheDockerHttpClientImpl.java:145)
17:29:21 [WARN ] - DockerService - Exception pulling image selenoid/vnc:chrome_97.0: java.io.IOException: com.sun.jna.LastErrorException: [2] No such file or directory
17:29:21 [INFO ] - DockerService - Starting Docker container selenoid/vnc:chrome_97.0
17:29:22 [ERROR] - WebDriverManager - There was an error creating WebDriver object for Chrome
...
带配置:
chrome_docker {
driver = {
ChromeOptions options = new ChromeOptions()
options.addArguments("--test-type", "--disable-gpu", "--disable-features=VizDisplayCompositor",
"--disable-software-rasterizer", "--disable-gpu-sandbox", "--no-sandbox", "--disable-dev-shm-usage", "--force-device-scale-factor=0.8")
WebDriverManager wdm = WebDriverManager.chromedriver().browserInDocker()
if (enableVNC) {
wdm = wdm.enableVnc()
}
WebDriver driverInstance = wdm.capabilities(options).create()
driverInstance.manage().window().maximize()
driverInstance
}
}
有什么想法或选项可以让它发挥作用吗?我的目标是创建 Jenkins 管道
西蒙
【问题讨论】:
标签: spock geb webdrivermanager-java