web-dev-qa-db-fra.com

Connexion Java Selenium Webdriver refusée

Je reçois une erreur de connexion trop commune refusée sur mon WebDriver Selenium. Le même code s'exécutait il y a quelques semaines.

J'ai lu en cercles dans les publications existantes et j'ai essayé de mettre à jour geckodriver et FireFox sans succès. Je peux exécuter le même code sur un autre ordinateur exécutant les mêmes versions du pilote, du navigateur, des bibliothèques, etc. Comment trouver la cause spécifique à cette machine? l'erreur est en dessous.

Déboguer 1 Déboguer 2 Déboguer 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

Et j'obtiens ceci en exécutant même le code de base suivant.

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();
        }
 }

Exemple avec chrome.

@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();
        }

Trace d'échec:

org.openqa.Selenium.WebDriverException: délai d'attente au démarrage du serveur de pilote . Informations de construction: version: 'inconnu', révision: 'inconnu', heure: 'inconnu' Informations système: Hôte: 'LT9LTDRC2', ip: '192.168.1.6', os.name: 'Windows 10', os.Arch: 'AMD64', os.version: '10 .0 ', Java.version:' 1.8.0_131 ' Informations sur le pilote: 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.openqa.Selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.Java:637) à org.openqa.Selenium.remote.RemoteWebDriver.startSession (RemoteWebDriver.Java:250) à org.openqa.Selenium.remote.RemoteWebDriver.startSession (RemoteWebDriver.Java:236) à org.openqa.Selenium.remote.RemoteWebDriver. (RemoteWebDriver.Java:137) à org.openqa.Selenium.chrome.ChromeDriver. (ChromeDriver.Java:184) à org.openqa.Selenium.chrome.ChromeDriver. (ChromeDriver.Java:171) à org.openqa.Selenium.chrome.ChromeDriver. (ChromeDriver.Java:124) sur seleniumPrograms.Gecko_Driver.testGoogleSearch (Gecko_Driver.Java:16) à Sun.reflect.NativeMethodAccessorImpl.invoke0 (Méthode native) à Sun.reflect.NativeMethodAccessorImpl.invoke (Source inconnue) à Sun.reflect.DelegatingMethodAccessorImpl.invoke (Source inconnue) à Java.lang.reflect.Method.invoke (Source inconnue) à org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.Java:50) à org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.Java:12) à org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.Java:47) à org.junit.internal.runners.statements.InvokeMethod.evaluate (InvokeMethod.Java:17) à org.junit.runners.ParentRunner.runLeaf (ParentRunner.Java:325) à org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.Java:78) à org.junit.runners.BlockJUnit4ClassRunner.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.access $ 000 (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.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.Java:459) à org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.Java:678) à org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.Java:382) à org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.Java:192) Causée par: org.openqa.Selenium.net.UrlChecker $ TimeoutException: délai d'attente dépassé pour l'attente de [ http: // localhost: 31675/status] disponible après 20002 ms à org.openqa.Selenium.net.UrlChecker.waitUntilAvailable (UrlChecker.Java:107) à org.openqa.Selenium.remote.service.DriverService.waitUntilAvailable (DriverService.Java:190) ... 33 autres Causé par: com.google.common.util.concurrent.UncheckedTimeoutException: Java.util.concurrent.TimeoutException à l'adresse com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout (SimpleTimeLimiter.Java:140) à org.openqa.Selenium.net.UrlChecker.waitUntilAvailable (UrlChecker.Java:80) ... 34 autres Causé par: Java.util.concurrent.TimeoutException sur Java.util.concurrent.FutureTask.get (source inconnue) à l'adresse com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout (SimpleTimeLimiter.Java:128) ... 35 plus

2
James Bowman

Notre service de sécurité a introduit une politique qui bloquait l'accès à l'exécution du fichier geckodriver.exe. Cela a été identifié en essayant de courir à partir de cmd. Pas sûr de savoir pourquoi je n'ai pas eu l'erreur significative dans le IDE (bloqué par la stratégie de groupe) pour gecko, j'ai eu cette erreur pour Chrome et IE. Pour pouvoir utiliser le pilote, il devait être enregistré dans les fichiers du programme, bien que cela puisse être spécifique à ma situation. Si vous obtenez cette erreur pour Geckodriver, je suggérerais d'essayer de l'exécuter à partir de cmd pour voir s'il existe un problème de stratégie.

4
James Bowman

Voici la solution à votre question:

Je ne vois aucune erreur en tant que telle dans votre code, mais la trace de pile d'erreur HttpHostConnectException dit tout.

Effectuez les étapes suivantes:

  1. Je ne vois aucune nécessité d'utiliser throws InterruptedException, vous pouvez envisager de le supprimer.
  2. Selon les meilleures pratiques, essayez de garder le geckodriver dans des emplacements pratiques: par exemple: C:\\your_directory.
  3. Évitez d’utiliser des noms de répertoire avec Temp.

  4. Bien que vous ayez pris l'aide de DesiredCapabilities Class, vous ne l'avez pas transmise pendant l'initialisation de l'instance de pilote. Vous devez faire: 

    WebDriver driver = new FirefoxDriver(capabilities);
    
  5. Effacez le cache de votre navigateur Mozilla Firefox.

  6. À partir du gestionnaire de tâches Windows, supprimez manuellement toutes les instances en cours de geckodriver.exe.
  7. Vous pouvez avoir besoin d’exécuter CCleaner pour éviter tout ce qui est indésirable.
  8. Redémarrez votre machine.
  9. Exécutez votre test. Cela devrait bien fonctionner.
  10. À la fin de votre étape de test, appelez driver.quit() pour empêcher les instances de geckodriver de pendre.

  11. Voici votre propre bloc de code de travail ajoutant la ligne 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();
    

Faites-moi savoir si cela vous aide.

0
DebanjanB