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
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.
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:
throws InterruptedException
, vous pouvez envisager de le supprimer.C:\\your_directory
.Évitez d’utiliser des noms de répertoire avec Temp
.
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);
Effacez le cache de votre navigateur Mozilla Firefox.
À la fin de votre étape de test, appelez driver.quit()
pour empêcher les instances de geckodriver de pendre.
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.