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その他
セキュリティ部門は、geckodriver.exeの実行へのアクセスをブロックするポリシーを導入しました。これは、cmdから実行しようとしたことで識別されました。 GeckoのIDE(ブロックされたグループポリシー))で意味のあるエラーが発生しなかった理由がわからない、chromeおよびIEでこのエラーが発生した。ドライバーを使用するには、プログラムファイルに保存する必要がありましたが、これは私の状況に固有の場合があります。Geckodriverでこのエラーが発生した場合は、cmdからドライバーを実行して、ポリシーの問題がないか確認してください。
これがあなたの質問の解決策です:
コードにはそのようなエラーはありませんが、エラースタックトレースHttpHostConnectException
がすべてを示しています。
次の手順を実行します。
throws InterruptedException
_を使用する必要がないようです。削除することを検討してください。C:\\your_directory
_。Temp
でディレクトリ名を使用しないでください。
DesiredCapabilities
Classを利用しましたが、ドライバーインスタンスを開始している間はクラスを渡していません。あなたがしている必要があります:
_WebDriver driver = new FirefoxDriver(capabilities);
_
Mozilla Firefoxブラウザーのキャッシュをクリアします。
テストステップの最後にdriver.quit()
を呼び出して、geckodriverインスタンスがぶら下がらないようにします。
以下は、_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();
_
これがあなたに役立つかどうか私に知らせてください。