我有一個帶驗收測試(即concordion測試)的Java項目的設置。 本地使用chrome和phantomjs驅動程序(在Windows上)測試正在通過(即通過gradle運行)。Openshift - gitlab-cli - phantomjs - WebDriverException:超時等待驅動程序服務器啓動
上gitlab-CI運行時(在openshift亞軍),我得到以下異常:
java.lang.ExceptionInInitializerError
at be.axians.actemium.milter.helper.BrowserTestParent.openBrowser(BrowserTestParent.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'
System info: host: 'runner-5408090a-project-349-concurrent-0dtvl2', ip: '10.131.1.51', os.name: 'Linux', os.arch: 'amd64', os.version: '3.10.0-514.26.1.el7.x86_64', java.version: '1.8.0_131'
Driver info: driver.version: PhantomJSDriver
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:193)
at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:181)
at org.openqa.selenium.phantomjs.PhantomJSCommandExecutor.execute(PhantomJSCommandExecutor.java:78)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:116)
at be.axians.actemium.milter.helper.WebDriverManager.<clinit>(WebDriverManager.java:53)
... 52 more
Caused by: org.openqa.selenium.net.UrlChecker$TimeoutException: Timed out waiting for [http://localhost:7465/status] to be available after 20001 ms
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:107)
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:190)
... 60 more
Caused by: com.google.common.util.concurrent.UncheckedTimeoutException: java.util.concurrent.TimeoutException
at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:140)
at org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:80)
... 61 more
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:205)
at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:128)
... 62 more
的驅動程序初始化如下:
DesiredCapabilities capabilities = DesiredCapabilities.phantomjs();
capabilities.setJavascriptEnabled(true);
PhantomJSDriverService service = new PhantomJSDriverService.Builder()
.usingPhantomJSExecutable(new File("/actemium/milter/acceptance-tests/driver/phantomjs/bin/phantomjs"))
.usingAnyFreePort()
.build();
//
driver = new PhantomJSDriver(service, capabilities);
與給定的依賴關係:
testCompile "com.codeborne:phantomjsdriver:1.4.3"
phantomjs-1.9.8
並與以下gitlab-ci配置:
acceptance-test:
stage: acceptance-test
services:
- jboss/keycloak:3.3.0.CR1
- postgres:latest
variables:
POSTGRES_DB: "..."
POSTGRES_USER: "..."
POSTGRES_PASSWORD: "..."
KEYCLOAK_PASSWORD: "..."
KEYCLOAK_USER: "..."
script:
- ls
- cd acceptance-tests/driver
- ls
- tar xf phantomjs-1.9.8-linux-x86_64.tar.bz2
- ls -al
- mv phantomjs-1.9.8-linux-x86_64 phantomjs
- ls
- ls phantomjs
#- ls -al phantomjs/bin
#- ln -s phantomjs/bin/phantomjs /usr/bin/phantomjs
- ls -al /actemium/milter/acceptance-tests/driver/phantomjs/bin/phantomjs
- cd ../..
- ls
- pwd
- ./gradlew -g .gradle_home acceptanceTest -Dspring.profiles.active=at --stacktrace
artifacts:
when: on_failure
paths:
- acceptance-tests/tests/build/reports/tests
expire_in: 1 week
任何人都知道如何解決這個問題?
我會盡力的。我對PhantomJS的解決方案是安裝隱藏的依賴項:yum install -y libfontconfig1 fontconfig libfontconfig1-dev libfreetype6-dev。但如果可能的話,更喜歡無頭鍍鉻;) –