org.openqa.selenium.remote.unreachablebrowserexception:与远程浏览器通信时出错它可能死于铬和 selenium

rdrgkggo  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(375)

我使用SeleniumJava3.12.0每小时运行一堆测试用例;测试NG;赛琳娜和多克,Jenkins。有时(大约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

在这个错误之后,所有剩余的测试都被跳过。
我使用的chrome浏览器版本遇到了错误-66,67。

bz4sfanl

bz4sfanl1#

此错误消息。。。

org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.

…表示remotewebdriver示例突然关闭。
您的代码试用版对调试这个问题会有一些帮助。也许你的主要问题可以是以下之一:
您已经提到您正在使用selenium java 3.12.0,但是您的错误跟踪日志提到了selenium java 3.6.0。因此,这个项目中可能引用了多个seleniumjava示例。因此,您需要确保您的项目只配置了一组seleniumjava二进制文件。
根据最佳实践:
将selenium升级至当前版本3.14.0。
升级chromedriver至当前chromedriver v2.41版本。
保持chrome版本在ChromeV66-68之间(根据chromedriver v2.41发行说明)
(仅限windowsos)在执行测试套件之前和之后,使用ccleaner工具清除所有操作系统杂务。
(仅限linuxos)在执行测试套件之前和之后,释放ubuntu/linux mint中未使用/缓存的内存。
如果您的基本web客户端版本太旧,请通过revo uninstaller卸载它,并安装最新的ga和发布的web客户端版本。
正如您提到的,每小时运行一组测试用例可能有多个chromedriver和chrome的悬空示例,可以通过进程列表(linux操作系统)或taskmanager(windows操作系统)查看。你需要经常调用 driver.quit()tearDown(){} 方法以优雅地关闭和销毁webdriver和web客户端示例。
如果webdriver和web浏览器的悬而未决的示例仍然存在,请考虑使用暴力杀死它们。您可以在selenium中找到详细的讨论:如何在不调用driver.quit()的情况下阻止geckodriver进程影响pc内存?
如果您的程序试图从大于5000的端口设置tcp连接,您可以参考本文
参考文献
org.openqa.selenium.remote.unreachablebrowserexception:与远程浏览器通信时出错。它可能已经死了。
与远程浏览器通信时出现“getting”错误。它可能已经死了
ie11:无法访问浏览器异常:与远程浏览器通信时出错。它可能已经死了。
webdriver修复unreachablebrowserexception

相关问题