0

Je reçois l'erreur de connexion refusée trop commun sur mon pilote Web Selenium. Le même code était en cours d'exécution il y a quelques semaines.Java Selenium Webdriver Connexion Refus

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

Debug 1 2 Debug Debug 3

Exception in thread "main" org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: connexion à localhost: 28379 [localhost/127,0. 0.1, localhost/0: 0: 0: 0: 0: 0: 1] a échoué: Connexion refusée: connect Info Build: version: 'unknown', révision: 'unknown', heure: 'unknown' Informations système: host : 'LT9LTDRC2', ip: '10 .130.3.15 ', 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.DriverCommandExecutor.execute (DriverCommandExecutor.java:91) à 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.firefox.FirefoxDriver. (FirefoxDriver.java:191) à org.openqa.selenium.firefox.FirefoxDriver. (FirefoxDriver.java:108) à org.openqa.selenium.firefox.FirefoxDriver. (FirefoxDriver.java:137) à seleniumPrograms.Gecko_Driver.main (Gecko_Driver.java:13) Causé par: org.apache.http.conn.HttpHostConnectException: Se connecter à localhost: 28379 [localhost/127.0.0.1, localhost/0: 0: 0: 0: 0: 0: 1] a échoué: Connexion refusée: connect à org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect (DefaultHttpClientConnectionOperator.java:159) à org.apache.http.impl.conn. PoolingHttpClientConnectionManager.connect (PoolingHttpClientConnectionManager.java:359) à org.apache.http.impl.execchain.MainClientExec.establishRoute (MainClientExec.java:381) à org.apache.http.impl.execchain.MainClientExec.execute (MainClientExec.java:237) sur org.apache.http.impl.execchain.ProtocolExec.execute (ProtocolExec.java:185) sur org.apache.http.impl. execchain.RetryExec.execute (RetryExec.java:89) à org.apache.http.impl.execchain.RedirectExec.execute (RedirectExec.java:111) à org.apache.http.impl.client.InternalHttpClient.doExecute (InternalHttpClient. java: 185) à org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:72) à org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:56) à org.openqa .selenium.remote.internal.ApacheHttpClient.fallBackExecute (ApacheHttpClient.java:139) à org.openqa.selenium.remote.internal.ApacheHttpClient.execute (ApacheHttpClient.java:87) à org.openqa.selenium.remote.ProtocolHandshake.createSession (ProtocolHandshake.java:343) à org.openqa.selenium.remote.ProtocolHandshake.createSession (ProtocolHandshake.java:159) à org.openqa.selenium.remote.HttpCommandExecutor.execute (HttpCommandExecutor.java:142) at org.openqa.selenium.remote.service.DriverCommandExecutor.execute (DriverCommandExecutor.java:82) ... 8 plus Causé par: java.net.ConnectException: Connexion refusée: connect at java.net .DualStackPlainSocketImpl.waitForConnect (méthode native) à java.net.DualStackPlainSocketImpl.socketConnect (source inconnue) à java.net.AbstractPlainSocketImpl.doConnect (source inconnue) à java.net.AbstractPlainSocketImpl.connectToAddress (source inconnue) à java.net.AbstractPlainSocketImpl .connect (source inconnue) à java.net.PlainSocketImpl.connect (source inconnue) à java.net.SocksSocketImpl.connect (source inconnue) à java.net.Socket.connect (source inconnue) à org.apache.http.conn .socket.PlainConnectionSocketFactory.connectSocket (PlainConnectionSocketFactory.java:75) à org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect (DefaultHttpClientConnectionOperator.java:142) ... 23 plus

Et j'obtiens ceci 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 du 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 dépassé pour le serveur de pilote pour démarrer. Informations sur la build: version: 'unknown', révision: 'unknown', time: 'unknown' 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.se lenium.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) à séleniumPrograms.Gecko_Driver.testGoogleSearch (Gecko_Driver. java: 16) à sun.reflect.NativeMethodAccessorImpl.invoke0 (native Method) à sun.reflect.NativeMethodAccessorImpl.invoke (Source inconnue) à sun.reflect.DelegatingMethodAccessorImpl.invoke (Source inconnue) à java.lang.reflect .Method.invoke (Source inconnue) at org.juni t.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) at 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) at org.junit.runners.ParentRunner $ 2.évaluer (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é par: org.openqa.selenium.net.UrlChecker $ TimeoutException: délai d'attente pour [http://localhost:31675/status] être 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 plus Causée par: com.google.common.util.concurrent.UncheckedTimeoutException: java.util.concurrent.TimeoutException at com.google.common.util.concurrent.SimpleTimeLimiter .callWithTimeout (SimpleTimeLimiter.java:140) à org.openqa.selenium.net.UrlChecker.waitUntilAvailable (UrlChecker.java:80) ... 34 plus causés par: java.util.concurrent.TimeoutException à java. util.concurrent.FutureTask.get (Source inconnue) à com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout (SimpleTimeLimiter.java:128) ... 35 plus

Répondre

0

Pouvez-vous faire une sortie de débogage de couple? dire

System.out.println("Debug 1"); 
System.out.println("Debug 2"); 
System.out.println("Debug 3"); 

Etc ... alors peut-être que nous pouvons voir où l'application se bloque?

+0

Merci pour votre réponse rapide. Il échoue sur l'instanciation de FirefoxDriver() –

+0

System.setProperty ("webdriver.gecko.driver", "C: \\ Temp \\ Pilotes et bibliothèques \\ geckodriver-v0.16.1-win64 \\ geckodriver.exe"); \t System.out.println ("Débogage 1"); \t DesiredCapabilities capabilities = DesiredCapabilities.firefox(); \t System.out.println ("Débogage 2"); \t capabilities.setCapability ("marionette", true); \t System.out.println ("Débogage 3"); \t Pilote WebDriver = nouveau FirefoxDriver(); \t System.out.println ("Débogage 4"); \t driver.get ("http://www.google.com"); \t \t pilote.manage(). Window(). Maximize(); –

+0

debug 4 n'imprime jamais –

0

Voici la solution à votre question:

Je ne vois pas d'erreur en tant que tel dans votre code, mais la pile erreur trace 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 ex. C:\\your_directory.
  3. Évitez d'utiliser les noms de répertoire avec Temp.

  4. Bien que vous ayez pris en charge la classe DesiredCapabilities, vous ne l'avez pas transmise lorsque vous avez lancé l'instance du pilote. Vous devez faire:

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

  6. Dans le Gestionnaire des tâches de Windows, tuer manuellement toutes les instances de fonctionnement de geckodriver.exe
  7. Vous pourriez avoir besoin pour exécuter le CCleaner pour éloigner tous les trucs indésirables.
  8. Redémarrez votre machine.
  9. Exécutez votre test. Cela devrait bien fonctionner.
  10. À la fin de votre Étape de test, appelez le driver.quit() pour empêcher les instances geckodriver de se balancer.

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

Laissez-moi savoir si cela vous aide.

+0

Merci Dev mais malheureusement après avoir terminé toutes les étapes suggérées je reçois toujours la même erreur. –

+0

Toujours pas de changement, malheureusement. J'ai geckodriver défini dans les variables d'environnement, donc je n'ai pas besoin d'avoir cet ensemble là du tout. –

+0

Mettez à jour votre code actuel et la pile d'erreurs dans la zone Question pour une analyse plus approfondie s'il vous plaît. Merci – DebanjanB

2

Notre département de sécurité a introduit une politique qui bloquait l'accès à l'exécution de geckodriver.exe. Cela a été identifié en essayant de lancer depuis cmd. Je ne sais pas pourquoi je n'ai pas eu l'erreur significative dans l'EDI (bloquée par la politique de groupe) pour gecko, j'ai eu cette erreur pour chrome et IE. Afin d'utiliser le pilote, il doit être sauvegardé dans les fichiers 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 y a un problème de politique.