[解決済み] org.openqa.selenium.remote.UnreachableBrowserException: リモートブラウザとの通信にエラーが発生しました。ChromeDriverとSeleniumで死亡している可能性があります。
質問
selenium-java 3.12.0; TestNG; Selenoid with docker, Jenkins を使って、1時間ごとにたくさんのテストケースを走らせているんだ。 時々(10件中1件くらい)エラーが発生します。
org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T15:28:36.4Z'
System info: host: 'autotest.rvkernel.com', ip: '94.130.165.217', os.name: 'Linux', os.arch: 'amd64', os.version: '4.13.0-26-generic', java.version: '1.8.0_181'
Driver info: driver.version: RemoteWebDriver
Capabilities [{mobileEmulationEnabled=false, hasTouchScreen=false, platform=LINUX, acceptSslCerts=false, acceptInsecureCerts=false, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, platformName=LINUX, setWindowRect=true, unexpectedAlertBehaviour=, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.39.562737 (dba483cee6a5f15e2e2d73df16968ab10b38a2bf), userDataDir=/tmp/.org.chromium.Chromium.gURWcu}, takesHeapSnapshot=true, pageLoadStrategy=normal, unhandledPromptBehavior=, databaseEnabled=false, handlesAlerts=true, version=67.0.3396.62, browserConnectionEnabled=false, nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]
Session ID: 56c4b100a95d89b3d5702ec8a1a0698a
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:564)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:276)
at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement$1.invoke(EventFiringWebDriver.java:376)
at com.sun.proxy.$Proxy14.click(Unknown Source)
at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement.click(EventFiringWebDriver.java:389)
at com.Elements.Element.lambda$click$2(Element.java:99)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at com.Elements.Element.click(Element.java:98)
at com.Elements.Element.click(Element.java:78)
at com.pages.landing.social.MailRuRegisterPage.clickRegister(MailRuRegisterPage.java:37)
at RulVulaknTests.authorization.AuthorizationTest.authorizationUserFromMailRU(AuthorizationTest.java:100)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:571)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:707)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:979)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Cannot decode response content:
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:83)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
... 28 more
Caused by: org.openqa.selenium.json.JsonException: java.io.EOFException: End of input at line 1 column 1 path $
Build info: version: '3.6.0', revision: '6fbf3ec767', time: '2017-09-27T15:28:36.4Z'
System info: host: 'autotest.rvkernel.com', ip: '94.130.165.217', os.name: 'Linux', os.arch: 'amd64', os.version: '4.13.0-26-generic', java.version: '1.8.0_181'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.json.JsonInput.execute(JsonInput.java:172)
at org.openqa.selenium.json.JsonInput.peek(JsonInput.java:72)
at org.openqa.selenium.json.JsonTypeCoercer.lambda$null$6(JsonTypeCoercer.java:136)
at org.openqa.selenium.json.JsonTypeCoercer.coerce(JsonTypeCoercer.java:122)
at org.openqa.selenium.json.Json.toType(Json.java:62)
at org.openqa.selenium.json.Json.toType(Json.java:52)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
... 31 more
Caused by: java.io.EOFException: End of input at line 1 column 1 path $
at com.google.gson.stream.JsonReader.nextNonWhitespace(JsonReader.java:1401)
at com.google.gson.stream.JsonReader.consumeNonExecutePrefix(JsonReader.java:1576)
at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:534)
at com.google.gson.stream.JsonReader.peek(JsonReader.java:425)
at org.openqa.selenium.json.JsonInput.lambda$peek$0(JsonInput.java:73)
at org.openqa.selenium.json.JsonInput.execute(JsonInput.java:168)
... 37 more
そして、このエラーの後、すべての残ったテストはスキップされます。
エラーが発生したクロームブラウザのバージョン - 66, 67.
解決方法を教えてください。
このエラーメッセージは...
org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
...を意味する。 リモートウェブドライバ インスタンスが突然閉じられた。
あなたのコードトライアルは、この問題のデバッグにいくらか役立つことでしょう。おそらく、主な問題は次のいずれかでしょう。
- を使用しているとのことですが selenium-java 3.12.0 が、エラートレースログに記載されているのは selenium-java 3.6.0 . ということは、もしかしたら selenium-java この中で参照されている プロジェクト . そのため プロジェクト が1セットだけ構成され selenium-java のバイナリです。
-
によるものです。 ベストプラクティス :
- アップグレード セレン 現在のレベルまで バージョン3.14.0 .
- アップグレード ChromeDriver を現在の ChromeDriver v2.41 レベルです。
- キープ クローム バージョン間の クローム v66-68 のレベルを設定します。( ChromeDriver v2.41リリースノートによる )
- ( WindowsOSのみ ) 使用 CCleaner の実行前後のOSの雑務を一掃するツールです。 テストスイート .
- ( LinuxOSのみ ) Ubuntu/Linux Mintの未使用/キャッシュされたメモリの解放と開放 を実行する前と後に テストスイート .
- もし、あなたのベース ウェブクライアント のバージョンが古すぎる場合、以下の手順でアンインストールしてください。 レボアンインストーラー をインストールし、最近のGAとリリースされたバージョンをインストールします。 ウェブクライアント .
-
ご指摘の通り 1時間ごとに大量のテストケースを実行する のインスタンスが複数ぶら下がっている可能性があります。 ChromeDriver と クローム を通して見ることができます。 プロセスリスト (Linux OS)または タスクマネージャ (Windows OS)です。を常に呼び出す必要があります。
driver.quit()
の中でtearDown(){}
メソッドを呼び出して & を閉じます。 WebDriver と ウェブクライアント のインスタンスを優雅に実行します。 -
のインスタンスがぶら下がっている場合、そのインスタンスは WebDriver と ウェブブラウザ がまだ残っている場合は、ブルートフォースでそれらを殺すことを検討してください。詳しい説明は Selenium : PC のメモリに影響を与える geckodriver プロセスを、driver.quit() を呼び出さずに停止する方法は?
-
もし、あなたのプログラムが 5000以上のポートからTCPコネクションを設定する。 を参照してください。 記事
-
参考文献
関連
-
[解決済み] WebDriver や Protractor でタブを閉じる方法はありますか?
-
[解決済み] org.openqa.selenium.remote.UnreachableBrowserException: リモートブラウザとの通信にエラーが発生しました。ChromeDriverとSeleniumで死亡している可能性があります。
-
selenium webdriverでFirefoxの新バージョンを呼び出す。
-
モバイルアプリの自動化 Appiumチュートリアル
-
クロームブラウザを設定するためのselenium+pythonオプション
-
selenium.webdriver.chrome.options add_argument 共通パラメータ
-
[解決済み] Seleniumで要素をスクロールして表示する
-
[解決済み] XPath:ドットとtext()の違い
-
[解決済み] ChromeDriverはどのバージョンのChrome Browserと互換性がありますか?
-
Selenium】Raspbian+Selenium+Firefoxのセットです。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] WebDriverサーバーの初期起動ページです。
-
selenium chromeドライバとIEドライバのFAQ (1)
-
selenium webdriverでFirefoxの新バージョンを呼び出す。
-
selenium.webdriver.chrome.options add_argument 共通パラメータ
-
[解決済み] org.openqa.selenium.WebDriverException を解決するにはどうしたらいいですか?
-
[解決済み] ChromeDriverはどのバージョンのChrome Browserと互換性がありますか?
-
Python Seleniumのリクエストヘッダ設定
-
LUNIXコンフィギュレーションクローム+SELENIUM
-
[解決済み] WebDriverで特定の条件下で待機しているときにWebページをリフレッシュする
-
[解決済み] Selenium はドキュメントの準備ができるまで待つ