Иногда, но не всегда, при выполнении наших сквозных тестов мы получаем исключение ConnectRefused. Это происходит только с chrome, но не с firefox. Для нас это происходит во время теста, т. Е. После того, как тест некоторое время работал правильно.
Мы используем docker image selenium/standalone-chrome:3.141.59-vanadium
. (Мы понизили -zinc
из-за другой проблемы.) Образ docker запускается как часть docker -компонента, который также содержит наше приложение / базу данных.
Сам тест выполняется вне docker -композиции с использованием JUnit5 и Selenium java org.seleniumhq.selenium:selenium-java:jar:3.141.59:compile
.
Все вместе выполняется на GitLab runner с использованием исполнителя docker. Это означает, что вокруг всего есть еще один слой docker, но это может быть неактуально.
Фактическое исключение:
org.openqa.selenium.WebDriverException: java.net.ConnectException: Connection refused (Connection refused)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'runner-_f3Cf_kC-project-44-concurrent-0', ip: '172.17.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.0-8-amd64', java.version: '11.0.5'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 77.0.3865.75, chrome: {chromedriverVersion: 77.0.3865.40 (f484704e052e0..., userDataDir: /tmp/.com.google.Chrome.5sVOki}, goog:chromeOptions: {debuggerAddress: localhost:37949}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webdriver.remote.sessionid: 4591df261c617729ec95f592ed6...}
Session ID: 4591df261c617729ec95f592ed69756b
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285)
at org.openqa.selenium.remote.RemoteWebElement.getLocation(RemoteWebElement.java:337)
[...]
Дальнейшей причины нет, java.net.ConnectException
декодируется из ответа, полученного RemoteWebDriver от автономного процесса селен в контейнере. Я предполагаю, что это означает, что автономный селен не смог достичь chrome или chrome -драйвера.
Журналы контейнера, к сожалению, не содержат ничего полезного, в частности, нет исключения ConnectException. Повышение уровня журнала для отладки для селена и / или хроматографа больше не давало информации.
В идеале я ищу решение, чтобы решить эту проблему, но любые шаги в этом направлении приветствуются.