Отказано в соединении с Java Selenium Webdriver

Я получаю слишком общую ошибку соединения, отказанную на моем селене. Тот же код выполнялся несколько недель назад.

Я читал в кругах через существующие посты и пытался обновить geckodriver и FireFox безрезультатно. Я могу запустить этот же код на другом компьютере, на котором установлены те же версии драйвера, браузера и библиотек и т. Д. Как найти причину, характерную для этого компьютера? ошибка ниже.

Отладка 1 отладка 2 отладка 3

Exception in thread "main" org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:28379 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'LT9LTDRC2', ip: '10.130.3.15', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131' Driver info: driver.version: Gecko_Driver  
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:91)  
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.firefox.FirefoxDriver.<init>(FirefoxDriver.java:191)     at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:108)     at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:137)     at seleniumPrograms.Gecko_Driver.main(Gecko_Driver.java:13) 
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:28379 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect   
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159)  
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:359)    
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)    
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)   at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)   at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)  
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)   at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)    
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)     
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)     
at org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:139)  
at org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:87)   
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:343)   
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:159)   
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)     
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)  ... 8 more 
Caused by: java.net.ConnectException: Connection refused: connect   
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)  
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)   
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)    
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)     
at java.net.PlainSocketImpl.connect(Unknown Source)     
at java.net.SocksSocketImpl.connect(Unknown Source)     
at java.net.Socket.connect(Unknown Source)  
at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)     
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)  ... 23 more

И я запускаю этот код даже в следующем базовом коде.

enter code here
package seleniumPrograms;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;

    public class Gecko_Driver {
        public static void main(String[] args)  {
             System.out.println("Debug 1");
             DesiredCapabilities capabilities=DesiredCapabilities.firefox();
             System.out.println("Debug 2");
             capabilities.setCapability("marionette", true);
             System.out.println("Debug 3");
             WebDriver driver = new FirefoxDriver(capabilities);
             System.out.println("Debug 4");
             driver.get("http://www.google.com");

             driver.manage().window().maximize();  
             driver.quit();
        }
 }

Пример с хромом.

@Test
        public void testGoogleSearch() throws InterruptedException {
          // Optional, if not specified, WebDriver will search your path for chromedriver.
          System.setProperty("webdriver.chrome.driver", "C:\\chromedriver_win32\\chromedriver.exe");

          WebDriver driver = new ChromeDriver();
          driver.get("http://www.google.com/xhtml");
          Thread.sleep(5000);  // Let the user actually see something!
          WebElement searchBox = driver.findElement(By.name("q"));
          searchBox.sendKeys("ChromeDriver");
          searchBox.submit();
          Thread.sleep(5000);  // Let the user actually see something!
          driver.quit();
        }

Трассировка сбоя:

org.openqa.selenium.WebDriverException: истекло время ожидания запуска сервера драйверов. Информация о сборке: версия: "неизвестно", ревизия: "неизвестно", время: "неизвестно" Системная информация: хост: "LT9LTDRC2", ip: "192.168.1.6", os.name: "Windows 10", os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'Информация о драйвере: driver.version: Gecko_Driver в org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:193) в org.openqa.selenium.remote.service.DriverService.start(DriverService.java:181) в org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78) в org.openqrem.selen..RemoteWebDriver.execute(RemoteWebDriver.java:637) по адресу org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250) по адресу org.openqa.selenium.remote.RemoteWebDriver.WartDriver.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.Wart.WebServer. org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:137) в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:184) в org.openqa.selenium.chrome.ChromeDver.:171) в org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:124) в seleniumPrograms.Gecko_Driver.testGoogleSearch(Gecko_Driver.java:16) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в исходном исходном ответе at sun.reflect.DelegatingMethodAccessorImpl.invoke(неизвестный источник) по адресу java.lang.reflect.Method.invoke(неизвестный источник) по адресу org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50).internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) в org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) в org.junit.internal.runnostate(InvokeMethod.java:17) в org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) в org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.jlass.jun4.java.java.78): runChild (BlockJUnit4ClassRunner.java:57) в org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) в org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) в org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) в org.junit.runners.ParentRunner.pl (ParentRunner.java:58) в org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) в org.junit.runners.ParentRunner.run(ParentRunner.java:363) в org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) в org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) в org.eclipse.jdt.intern.jun.RemoteTestRunner.runTests(RemoteTestRunner.java:459) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) в org.eclipse.jTrun.un(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) Причина: org.openqa.selenium.net.UrlChecker$TimeoutException: истекло время ожидания ожидания [ HTTP: // локальный: 31675 / стат us], доступный через 20002 мс по адресу org.openqa.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:107) по адресу org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:190) Еще 33. Причина: com.google.common.util.concurrent.UncheckedTimeoutException: java.util.concurrent.TimeoutException at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:140) в org.open.selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.java:80) ... еще 34 причины: java.util.concurrent.TimeoutException в java.util.concurrent.FutureTask.get(Неизвестный источник) в com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.java:128) ... еще 35

2 ответа

Решение

Наш отдел безопасности ввел политику, которая блокировала доступ к выполнению geckodriver.exe. Это было идентифицировано при попытке запустить из cmd. Не уверен, почему я не получил значимую ошибку в IDE (заблокированную групповой политикой) для gecko, я получил эту ошибку для chrome и IE. Чтобы использовать драйвер, его нужно было сохранить в программных файлах, хотя это может быть связано с моей ситуацией. Если вы получите эту ошибку для Geckodriver, я бы предложил попробовать выполнить ее из cmd, чтобы увидеть, есть ли проблема в политике.

Вот решение вашего вопроса:

Я не вижу никакой ошибки как таковой в вашем коде, но трассировка стека ошибок HttpHostConnectException говорит все это.

Выполните следующие шаги:

  1. Я не вижу необходимости использовать throws InterruptedExceptionВы можете рассмотреть возможность его удаления.
  2. В соответствии с передовой практикой старайтесь держать гекодривера в удобных местах: C:\\your_directory,
  3. Избегайте использования имен каталогов с Temp,

  4. Хотя вы приняли помощь DesiredCapabilities Класс, вы не прошли его, пока инициировали экземпляр драйвера. Вы должны делать:

    WebDriver driver = new FirefoxDriver(capabilities);
    
  5. Очистите кеш браузера Mozilla Firefox.

  6. В диспетчере задач Windows вручную убейте все запущенные экземпляры geckodriver.exe
  7. Вам может потребоваться запустить CCleaner, чтобы избежать нежелательных вещей.
  8. Перезагрузите машину.
  9. Выполните свой тест. Это должно работать хорошо.
  10. В конце вашего тестового шага позвоните driver.quit() чтобы препятствовать тому, чтобы экземпляры geckodriver болтались.

  11. Вот ваш собственный рабочий блок кода, добавляющий System.setProperty линия:

    System.setProperty("webdriver.gecko.driver", "C:\\your_directory\\geckodriver.exe");
    System.out.println("Debug 1");
    DesiredCapabilities capabilities=DesiredCapabilities.firefox();
    System.out.println("Debug 2");
    capabilities.setCapability("marionette", true);
    System.out.println("Debug 3");
    WebDriver driver = new FirefoxDriver(capabilities);
    System.out.println("Debug 4");
    driver.get("http://www.google.com");
    driver.manage().window().maximize();  
    driver.quit();
    

Дайте мне знать, если это поможет вам.

Здесь я столкнулся с той же ошибкой. После перезагрузки системы код работал нормально. Моя проблема заключалась в том, что мой код оставил некоторые процессы открытыми в конце, и они использовали много оперативной памяти. Попробуйте запустить:

pkill geckodriver
pkill firefox
pkill selenium

А затем снова запустите свой код.

Другие вопросы по тегам