Перейти к содержимому

romantiqueam

Регистрация: 21 ноя 2020
Offline Активность: 19 апр 2021 09:36
-----

Мои темы

Failed to connect to /192.168.0.100:4444 при запуске из контейнера

19 апреля 2021 - 07:48

Здравствуйте. Не могу никак правильно подключить докер контейнер selenoid к контейнеру jenkins. Уже весь интернет облазил, коллеги пишут, что должно работать, прям беда. Стэк java 8, testng 7.4.0, selenoid latest. Запускаю на Windows 10 Pro

Всё это собирается из докер-композа

version: '3.7'
services:
  jenkins:
    image: jenkins/jenkins
    privileged: true
    network_mode: bridge
    user: root
    ports:
      - 8084:8080
      - 50004:50000
    container_name: jenkins
    volumes:
      - d:/Hotger/selenoid_plus/ssh_config:/etc/ssh/ssh_config
      - d:/Hotger/selenoid_plus/ssh:/root/.ssh/
      - d:/Hotger/jenkins:/var/jenkins_home
      - //var/run/docker.sock:/var/run/docker.sock

  selenoid:
    image: aerokube/selenoid:latest-release
    network_mode: bridge
    ports:
      - 4444:4444
    container_name: selenoid
    volumes:
      - d:/Hotger/selenoid_plus:/etc/selenoid/ # assumed current dir contains browsers.json
      - //var/run/docker.sock:/var/run/docker.sock
      
  selenoid-ui:
    image: aerokube/selenoid-ui:latest-release
    network_mode: bridge
    links:
      - selenoid
    ports:
      - 8080:8080
    container_name: selenoid_ui
    command: ["--selenoid-uri", "http://selenoid:4444"]

Я закидываю переменную окружения, чтобы получалась строка http://selenoid:4444

if(isLocalBrowser()){
   driver = new ChromeDriver(options);
}else{
   try {
      driver = new RemoteWebDriver(new URL(getRemoteAddress()), capabilities);
   } catch (MalformedURLException e) {
      driver = null;
      e.printStackTrace();
   }
}
private String getRemoteAddress() {
    String remoteUrl = isCIRunner() ? "selenoid" : "localhost";
    return "http://" + remoteUrl + ":4444/wd/hub";
}

В итоге получаю ошибку:
 

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: '39657e47e811', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.19.128-microsoft-standard', java.version: '1.8.0_282'
Driver info: driver.version: RemoteWebDriver
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:573)
	at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
	at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
	at application.Chrome.createDriver(Chrome.java:35)
	at application.Application.initWebDriver(Application.java:24)
	at application.Application.setUp(Application.java:11)
	at model.MainPage.open(MainPage.java:23)
	at payment.TestCommonPayment.testPaymentProducts(TestCommonPayment.java:30)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
	at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598)
	at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
	at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
	at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824)
	at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
	at java.util.ArrayList.forEach(ArrayList.java:1259)
	at org.testng.TestRunner.privateRun(TestRunner.java:794)
	at org.testng.TestRunner.run(TestRunner.java:596)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:377)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:371)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:332)
	at org.testng.SuiteRunner.run(SuiteRunner.java:276)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1212)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1134)
	at org.testng.TestNG.runSuites(TestNG.java:1063)
	at org.testng.TestNG.run(TestNG.java:1031)
	at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.runTests(TestNGTestClassProcessor.java:141)
	at org.gradle.api.internal.tasks.testing.testng.TestNGTestClassProcessor.stop(TestNGTestClassProcessor.java:90)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy2.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.net.ConnectException: Failed to connect to /192.168.0.100:4444
	at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:247)
	at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:165)
	at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
	at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
	at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
	at okhttp3.RealCall.execute(RealCall.java:77)
	at org.openqa.selenium.remote.internal.OkHttpClient.execute(OkHttpClient.java:103)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:105)
	at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	... 61 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:607)
	at okhttp3.internal.platform.Platform.connectSocket(Platform.java:129)
	at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:245)
	... 83 more

Подскажите, пожалуйста, в чём может быть проблема? Не могу сообразить, что и как делать... Заранее большое спасибо!


Как правильно хранить файл для тестирования загрузки на сайте

12 марта 2021 - 16:12

Здравствуйте. Вопрос следующий, я хочу создать тест для проверки загрузки файла на сайт. Как правильно в случае автоматизации такой файл хранить? Запускается он на удалённом сервере. Соответственно, хранить на сервере отдельно мне его запретили из-за сложности архитектуры. Хранить его на хабе тоже бессмысленно и глупо. Я предположил, что такой файл можно сначала скачивать, а потом использовать в этом же тесте, но это вроде как не атомарно. Какая практика у вас решения подобных вопросов? Заранее спасибо)


Есть ли аналогичная реализация в языке cssSelector

26 января 2021 - 10:58

Здравствуйте. В Xpath есть реализация, что если несколько элементов попадают в коллекцию, то можно по ним переключаться (...)[n], к примеру (//div)[1] - я получу первый див со страницы. А есть ли такое же в cssSelector ?


В качестве прокси стоит ли использовать Browsermob Proxy JAVA

23 января 2021 - 09:56

Всем привет. Вопрос очень прост, смотрел по maven repository последнее обновление browsermob proxy для JAVA было 11 сентября 2017 года. То есть, получается, новых версий выпущено просто не было уже очень давно. Может кто пробовал какие другие аналоги, которые не хуже данного инструмента и внедряют новые элементы, развиваются до сих пор? А то вроде идём вперёд, а этот инструмент остаётся единственным широкоприменяемым за счёт своего удобства и стабильности. 


Проблема с установкой заголовка Java 8 + Selenium 3.141 + Browsermob P

21 ноября 2020 - 15:01

Добрый день. Возможно, кто-то сталкивался. Использую Windows 10 последний билд. Захожу на сайт http Не могу установить заголовок для Browsermob Proxy при автотестах (TestNG 7.1.0, Selenium 3.141). Я пытался использовать BrowserMobProxyServer server.addHeader. Элемент server помещает в переменную additionalheaders мой заголовок, но в итоге в открывающемся браузере он старый. Далее пытался использовать фильтр

server.addRequestFilter((request, contents, messageInfo) -> {
            request.headers().add("User-Agent", "Mozilla/5.0 (Linux; Android 10; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Mobile Safari/537.36.");
            return null;
        });

Подключал его до запуска, потом после запуска сервера - никакого эффекта. Смотрел ролик с Алексеем Баранцевым за 13 год. Там используются классы, которые в версии 2.1.5 уже просто отсутствуют. Кто-то может сталкивался с подобной проблемой? Помогите, пожалуйста, осуществить элементарное действие - изменить заголовок BMP 2.1.5. Или подскажите версию, с которой это дело всё таки работает) Заранее спасибо)