webentwicklung-frage-antwort-db.com.de

Java Selenium Webdriver-Verbindung abgelehnt

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

2
James Bowman

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.

4
James Bowman

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:

  1. Ich sehe keine Notwendigkeit, throws InterruptedException zu verwenden, Sie können es vielleicht entfernen.
  2. Versuchen Sie gemäß bewährten Methoden, den Geckodriver an geeigneten Orten zu halten: z. C:\\your_directory.
  3. Vermeiden Sie die Verwendung von Verzeichnisnamen mit Temp.

  4. 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);
    
  5. Leeren Sie den Cache Ihres Mozilla Firefox-Browsers.

  6. Beenden Sie im Windows Task-Manager alle aktiven Instanzen von geckodriver.exe manuell
  7. Möglicherweise müssen Sie den CCleaner ausführen, um alle unerwünschten Inhalte auszuschließen.
  8. Starten Sie Ihre Maschine neu.
  9. Führen Sie Ihren Test aus. Es sollte gut funktionieren.
  10. Rufen Sie am Ende Ihres Testschritts driver.quit() auf, um zu verhindern, dass Geckodriver-Instanzen baumeln.

  11. 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.

0
DebanjanB