Ich erhalte den allzu häufigen Fehler "Verbindung abgelehnt" auf meinem Selenium-Treiber. Derselbe Code wurde vor einigen Wochen ausgeführt.
Ich habe in Kreisen durch bestehende Beiträge gelesen und versucht, Geckodriver und FireFox ohne Erfolg zu aktualisieren. Ich kann denselben Code auf einem anderen Computer ausführen, auf dem dieselben Versionen von Treiber, Browser und Bibliotheken usw. ausgeführt werden. Wie kann ich die Ursache für diesen Computer finden? Der Fehler ist unten.
Debuggen 1 Debuggen 2 Debuggen 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
Und ich bekomme dazu noch den folgenden Basiscode laufen.
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();
}
}
Beispiel mit Chrom.
@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();
}
Fehlerverfolgung:
org.openqa.Selenium.WebDriverException: Zeitüberschreitung beim Warten auf den Start des Treiberservers . Build-Info: Version: 'unbekannt', Revision: 'unbekannt', Zeit: 'unbekannt' Systeminfo: Host: 'LT9LTDRC2', IP: '192.168.1.6', os.name: 'Windows 10', os.Arch: 'AMD64', os.version: '10 .0 ', Java.version:' 1.8.0_131 ' Treiberinfo: Treiberversion: Gecko_Driver bei org.openqa.Selenium.remote.service.DriverService.waitUntilAvailable (DriverService.Java:193) unter org.openqa.Selenium.remote.service.DriverService.start (DriverService.Java:181) at org.openqa.Selenium.remote.service.DriverCommandExecutor.execute (DriverCommandExecutor.Java:78) bei org.openqa.Selenium.remote.RemoteWebDriver.execute (RemoteWebDriver.Java:637) bei org.openqa.Selenium.remote.RemoteWebDriver.startSession (RemoteWebDriver.Java:250) bei org.openqa.Selenium.remote.RemoteWebDriver.startSession (RemoteWebDriver.Java:236) at org.openqa.Selenium.remote.RemoteWebDriver. (RemoteWebDriver.Java:137) at org.openqa.Selenium.chrome.ChromeDriver (ChromeDriver.Java:184) bei org.openqa.Selenium.chrome.ChromeDriver. (ChromeDriver.Java:171) bei org.openqa.Selenium.chrome.ChromeDriver (ChromeDriver.Java:124) bei seleniumPrograms.Gecko_Driver.testGoogleSearch (Gecko_Driver.Java:16) at Sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) at Sun.reflect.NativeMethodAccessorImpl.invoke (unbekannte Quelle) at Sun.reflect.DelegatingMethodAccessorImpl.invoke (unbekannte Quelle) at Java.lang.reflect.Method.invoke (unbekannte Quelle) at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.Java:50) at org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.Java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively (FrameworkMethod.Java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate (InvokeMethod.Java:17) at org.junit.runners.ParentRunner.runLeaf (ParentRunner.Java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.Java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.Java:57) bei org.junit.runners.ParentRunner $ 3.run (ParentRunner.Java: 290) bei org.junit.runners.ParentRunner $ 1.schema (ParentRunner.Java:71) at org.junit.runners.ParentRunner.runChildren (ParentRunner.Java:288) bei org.junit.runners.ParentRunner.zugreifen Sie auf $ 000 (ParentRunner.Java:58) bei org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.Java:268) at org.junit.runners.ParentRunner.run (ParentRunner.Java:363) at org.Eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run (JUnit4TestReference.Java:86) at org.Eclipse.jdt.internal.junit.runner.TestExecution.run (TestExecution.Java:38) at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.Java:459) at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.Java:678) at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.Java:382) at org.Eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.Java:192) Ursache: org.openqa.Selenium.net.UrlChecker $ TimeoutException: Zeitüberschreitung beim Warten darauf, dass [ http: // localhost: 31675/status] nach 20002 ms. at org.openqa.Selenium.net.UrlChecker.waitUntilAvailable (UrlChecker.Java:107) bei org.openqa.Selenium.remote.service.DriverService.waitUntilAvailable (DriverService.Java: 190) ... 33 mehr Verursacht durch: com.google.common.util.concurrent.UncheckedTimeoutException: Java.util.concurrent.TimeoutException unter com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout (SimpleTimeLimiter.Java:140) at org.openqa.Selenium.net.UrlChecker.waitUntilAvailable (UrlChecker.Java:80) ... 34 mehr Verursacht durch: Java.util.concurrent.TimeoutException at Java.util.concurrent.FutureTask.get (unbekannte Quelle) unter com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout (SimpleTimeLimiter.Java:128) ... 35 mehr
Unsere Sicherheitsabteilung führte eine Richtlinie ein, die den Zugriff auf die Ausführung von geckodriver.exe blockierte. Dies wurde durch den Versuch identifiziert, von cmd aus zu laufen. Nicht sicher, warum ich den bedeutungsvollen Fehler in der IDE (durch Gruppenrichtlinien gesperrt) für Gecko nicht erhalten habe. Ich habe diesen Fehler für Chrome und IE erhalten. Um den Treiber verwenden zu können, musste er in Programmdateien gespeichert werden. Dies kann jedoch von meiner Situation abhängen. Wenn Sie diesen Fehler für Geckodriver erhalten, würde ich empfehlen, ihn von cmd auszuführen, um zu sehen, ob ein Richtlinienproblem vorliegt.
Hier ist die Lösung für Ihre Frage:
Ich sehe keinen Fehler als solchen in Ihrem Code, aber die Ablaufverfolgung des Fehlerstapels HttpHostConnectException
sagt alles aus.
Führen Sie die folgenden Schritte aus:
throws InterruptedException
zu verwenden, Sie können es vielleicht entfernen.C:\\your_directory
.Vermeiden Sie die Verwendung von Verzeichnisnamen mit Temp
.
Obwohl Sie DesiredCapabilities
Class unterstützt haben, haben Sie diese nicht übergeben, während Sie die Treiberinstanz initiiert haben. Sie müssen tun:
WebDriver driver = new FirefoxDriver(capabilities);
Leeren Sie den Cache Ihres Mozilla Firefox-Browsers.
Rufen Sie am Ende Ihres Testschritts driver.quit()
auf, um zu verhindern, dass Geckodriver-Instanzen baumeln.
Hier ist Ihr eigener Arbeitscode-Block, der die Zeile System.setProperty
hinzufügt:
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();
Lass es mich wissen, wenn dir das hilft.