web-dev-qa-db-ja.com

Java Selenium Webdriver接続が拒否されました

Selenium Webdriverで一般的な接続拒否エラーが発生しています。同じコードが数週間前に実行されていました。

私は既存の投稿をサークルで読んでいて、geckodriverとFireFoxを更新して無益にしようとしました。同じバージョンのドライバ、ブラウザ、ライブラリなどを実行している別のコンピュータで同じコードを実行できます。このマシンに固有の原因を見つけるにはどうすればよいですか?エラーは以下のとおりです。

デバッグ1デバッグ2デバッグ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

そして、私はこれを次の基本的なコードでも実行します。

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

クロムの例。

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

失敗のトレース:

org.openqa.Selenium.WebDriverException:ドライバーサーバーの起動を待機中にタイムアウトしました。ビルド情報:バージョン:「不明」、リビジョン:「不明」、時間:「不明」システム情報:ホスト:「LT9LTDRC2」、ip:「192.168.1.6」、os.name:「Windows 10」、os.Arch: 'AMD64'、os.version:'10 .0 '、Java.version:' 1.8.0_131 'ドライバー情報:driver.version:Gecko_Driver at org.openqa.Selenium.remote.service.DriverService.waitUntilAvailable(DriverService.Java:193) org.openqa.Selenium.remote.service.DriverService.start(DriverService.Java:181)at org.openqa.Selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.Java:78)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.chrome.ChromeDriver。(ChromeDriver.Java:184)at org.openqa.Selenium.chrome.ChromeDriver。(ChromeDriver.Javaのorg.openqa.Selenium.remote.RemoteWebDriver。(RemoteWebDriver.Java:137) :171)org.openqa.Seleでnium.chrome.ChromeDriver。(ChromeDriver.Java:124)at seleniumPrograms.Gecko_Driver.testGoogleSearch(Gecko_Driver.Java:16)at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at Sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) Sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at Java.lang.reflect.Method.invoke(Unknown Source)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)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)at org.junit.runners.ParentRunner $ 3.run(ParentRunner.J ava:290)at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.Java:71)at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:288)at org.junit.runners.ParentRunner.access $ 000 (ParentRunner.Java:58)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.Java:268)at 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)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)原因:org.openqa.Selenium.net.UrlChecker $ TimeoutException:タイムアウト待ち[ http:// localhost:31675/s tatus] org.openqa.Selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.Java:107)のorg.openqa.Selenium.remote.service.DriverService.waitUntilAvailable(DriverService.Java:190)で20002ミリ秒後に使用可能)... 33 more原因:com.google.common.util.concurrent.UncheckedTimeoutException:Java.util.concurrent.TimeoutException at com.google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.Java:140)at org.openqa.Selenium.net.UrlChecker.waitUntilAvailable(UrlChecker.Java:80)... 34 more原因:com。at Java.util.concurrent.FutureTask.get(Unknown Source)でのJava.util.concurrent.TimeoutException google.common.util.concurrent.SimpleTimeLimiter.callWithTimeout(SimpleTimeLimiter.Java:128)... 35その他

2
bowja

セキュリティ部門は、geckodriver.exeの実行へのアクセスをブロックするポリシーを導入しました。これは、cmdから実行しようとしたことで識別されました。 GeckoのIDE(ブロックされたグループポリシー))で意味のあるエラーが発生しなかった理由がわからない、chromeおよびIEでこのエラーが発生した。ドライバーを使用するには、プログラムファイルに保存する必要がありましたが、これは私の状況に固有の場合があります。Geckodriverでこのエラーが発生した場合は、cmdからドライバーを実行して、ポリシーの問題がないか確認してください。

4
bowja

これがあなたの質問の解決策です:

コードにはそのようなエラーはありませんが、エラースタックトレースHttpHostConnectExceptionがすべてを示しています。

次の手順を実行します。

  1. _throws InterruptedException_を使用する必要がないようです。削除することを検討してください。
  2. ベストプラクティスに従って、geckodriverを便利な場所に保管してください。 _C:\\your_directory_。
  3. Tempでディレクトリ名を使用しないでください。

  4. DesiredCapabilities Classを利用しましたが、ドライバーインスタンスを開始している間はクラスを渡していません。あなたがしている必要があります:

    _WebDriver driver = new FirefoxDriver(capabilities);
    _
  5. Mozilla Firefoxブラウザーのキャッシュをクリアします。

  6. Windowsタスクマネージャーから、geckodriver.exeの実行中のすべてのインスタンスを手動で強制終了します。
  7. すべての不要なものを避けるために、CCleanerを実行する必要がある場合があります。
  8. マシンを再起動します。
  9. テストを実行します。それはうまくいくはずです。
  10. テストステップの最後にdriver.quit()を呼び出して、geckodriverインスタンスがぶら下がらないようにします。

  11. 以下は、_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();
    _

これがあなたに役立つかどうか私に知らせてください。

0
DebanjanB