Selenium 硒测试中的断开问题

Selenium 硒测试中的断开问题,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我正在修复Selenium测试的问题,Selenium测试旨在测试在网站上提交多个类别的评论,我遇到了在执行请求时连接断开的问题。这些错误似乎是不确定的——它们并不总是发生,并且发生在给定操作的设置超时之前。我正在CentOS虚拟机(在我的本地机器上)上运行Selenium hub,这似乎不太可能出现网络问题,因为Web服务器也在我的机器上本地运行。我遇到了两个主要的例外:“与远程浏览器通信时出错。它可能已经死了。”,和客户端不见了。我在下面列出了每一个例子。如果我运行测试50次,它们可能会在1

我正在修复Selenium测试的问题,Selenium测试旨在测试在网站上提交多个类别的评论,我遇到了在执行请求时连接断开的问题。这些错误似乎是不确定的——它们并不总是发生,并且发生在给定操作的设置超时之前。我正在CentOS虚拟机(在我的本地机器上)上运行Selenium hub,这似乎不太可能出现网络问题,因为Web服务器也在我的机器上本地运行。我遇到了两个主要的例外:“与远程浏览器通信时出错。它可能已经死了。”,和客户端不见了。我在下面列出了每一个例子。如果我运行测试50次,它们可能会在10-30%的时间内在任何地方失败,而其余时间运行时不会出现问题。我是否缺少与virtualbox连接相关的东西,或者我如何使用Selenium?提前谢谢

无法访问的BrowserException的堆栈跟踪:

org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.5.0-49-generic', java.version: '1.7.0_60'
Driver info: driver.version: CoreDriver
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:569)
    at org.openqa.selenium.remote.RemoteWebDriver.getPageSource(RemoteWebDriver.java:414)
    at org.openqa.selenium.remote.Augmenter$CompoundHandler.intercept(Augmenter.java:280)
    at org.openqa.selenium.remote.RemoteWebDriver$$EnhancerByCGLIB$$58bad765.getPageSource(<generated>)
    at com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:537)
    at com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:513)
    at com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:497)
    at com.foo.selenium.CoreDriver.waitForElementToAppearInElementByLocator(CoreDriver.java:378)
    at com.foo.selenium.CoreDriver.waitForElementToAppearInElementByLocator(CoreDriver.java:343)
    at com.foo.bar.reviewtest.ResponseTest.verifyResponse(ResponseTest.java:121)
    at com.foo.bar.reviewtest.ResponseTest.runATest(ResponseTest.java:48)
    at com.foo.bar.reviewtest.UserTestBase.testDriver(UserTestBase.java:129)
Caused by: org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 1207803; received: 0
    at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:184)
    at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:204)
    at org.apache.http.impl.io.ContentLengthInputStream.close(ContentLengthInputStream.java:108)
    at org.apache.http.conn.BasicManagedEntity.streamClosed(BasicManagedEntity.java:157)
    at org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:237)
    at org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:186)
    at org.apache.http.util.EntityUtils.consume(EntityUtils.java:85)
    at org.openqa.selenium.remote.HttpCommandExecutor$EntityWithEncoding.<init>(HttpCommandExecutor.java:412)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:300)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)
    ... 39 more
... Removed 27 stack frames
 org.openqa.selenium.remote.UnreachableBrowserException: Error communicating with the remote browser. It may have died.
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.5.0-49-generic', java.version: '1.7.0_60'
Driver info: driver.version: CoreDriver
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:569)
    at org.openqa.selenium.remote.RemoteWebDriver.getPageSource(RemoteWebDriver.java:414)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.openqa.selenium.remote.Augmenter$CompoundHandler.intercept(Augmenter.java:280)
    at org.openqa.selenium.remote.RemoteWebDriver$$EnhancerByCGLIB$$58bad765.getPageSource(<generated>)
    at com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:537)
    at com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:513)
    at com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:497)
    at com.foo.selenium.CoreDriver.waitForElementToAppearInElementByLocator(CoreDriver.java:378)
    at com.foo.selenium.CoreDriver.waitForElementToAppearInElementByLocator(CoreDriver.java:343)
    at com.foo.bar.reviewtest.ResponseTest.verifyResponse(ResponseTest.java:121)
    at com.foo.bar.reviewtest.ResponseTest.runATest(ResponseTest.java:48)
    at com.foo.bar.reviewtest.UserTestBase.testDriver(UserTestBase.java:129)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
    at org.testng.TestRunner.privateRun(TestRunner.java:767)
    at org.testng.TestRunner.run(TestRunner.java:617)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1123)
    at org.testng.TestNG.run(TestNG.java:1031)
    at org.testng.TestNG.privateMain(TestNG.java:1338)
    at org.testng.TestNG.main(TestNG.java:1307)
Caused by: org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 1207803; received: 0
    at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:184)
    at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:204)
    at org.apache.http.impl.io.ContentLengthInputStream.close(ContentLengthInputStream.java:108)
    at org.apache.http.conn.BasicManagedEntity.streamClosed(BasicManagedEntity.java:157)
    at org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:237)
    at org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:186)
    at org.apache.http.util.EntityUtils.consume(EntityUtils.java:85)
    at org.openqa.selenium.remote.HttpCommandExecutor$EntityWithEncoding.<init>(HttpCommandExecutor.java:412)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:300)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)
    ... 39 more
org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了。
生成信息:版本:“未知”,版本:“未知”,时间:“未知”
系统信息:os.name:'Linux',os.arch:'amd64',os.version:'3.5.0-49-generic',java.version:'1.7.0_60'
驱动程序信息:Driver.version:CoreDriver
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:569)
位于org.openqa.selenium.remote.RemoteWebDriver.getPageSource(RemoteWebDriver.java:414)
位于org.openqa.selenium.remote.Augmenter$CompoundHandler.intercept(Augmenter.java:280)
在org.openqa.selenium.remote.RemoteWebDriver$$enhancerbyglib$$58bad765.getPageSource()上
位于com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:537)
位于com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:513)
位于com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:497)
位于com.foo.selenium.CoreDriver.WaitForElementToAppearimentByLocator(CoreDriver.java:378)
位于com.foo.selenium.CoreDriver.WaitForElementToAppearimentByLocator(CoreDriver.java:343)
在com.foo.bar.reviewtest.ResponseTest.verifyResponse(ResponseTest.java:121)上
在com.foo.bar.reviewtest.ResponseTest.RunateTest(ResponseTest.java:48)上
位于com.foo.bar.reviewtest.UserTestBase.testDriver(UserTestBase.java:129)
原因:org.apache.http.ConnectionClosedException:内容长度分隔的邮件正文过早结束(预期为1207803;收到为0)
位于org.apache.http.impl.io.ContentLengthinInputStream.read(contentLengthinInputStream.java:184)
位于org.apache.http.impl.io.ContentLengthinInputStream.read(contentLengthinInputStream.java:204)
位于org.apache.http.impl.io.ContentLengthinInputStream.close(contentLengthinInputStream.java:108)
位于org.apache.http.conn.BasicManagedEntity.streamClosed(BasicManagedEntity.java:157)
位于org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:237)
位于org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:186)
位于org.apache.http.util.EntityUtils.consume(EntityUtils.java:85)
位于org.openqa.selenium.remote.HttpCommandExecutor$EntityWithEncoding。(HttpCommandExecutor.java:412)
位于org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:300)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527)
…还有39个
…移除了27个堆叠框架
org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已死亡。
生成信息:版本:“未知”,版本:“未知”,时间:“未知”
系统信息:os.name:'Linux',os.arch:'amd64',os.version:'3.5.0-49-generic',java.version:'1.7.0_60'
驱动程序信息:Driver.version:CoreDriver
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:569)
位于org.openqa.selenium.remote.RemoteWebDriver.getPageSource(RemoteWebDriver.java:414)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.openqa.selenium.remote.Augmenter$CompoundHandler.intercept(Augmenter.java:280)
在org.openqa.selenium.remote.RemoteWebDriver$$enhancerbyglib$$58bad765.getPageSource()上
位于com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:537)
位于com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:513)
位于com.foo.selenium.CoreDriver.captureScreenAndSource(CoreDriver.java:497)
位于com.foo.selenium.CoreDriver.WaitForElementToAppearimentByLocator(CoreDriver.java:378)
位于com.foo.selenium.CoreDriver.WaitForElementToAppearimentByLocator(CoreDriver.java:343)
在com.foo.bar.reviewtest.ResponseTest.verifyResponse(ResponseTest.java:121)上
在com.foo.bar.reviewtest.ResponseTest.RunateTest(ResponseTest.java:48)上
位于com.foo.bar.reviewtest.UserTestBase.testDriver(UserTestBase.java:129)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
位于org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80)
位于org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
位于org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
位于org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
位于org.testng.internal.TestMethodWorker.invokeTestMethods(测试
org.openqa.selenium.WebDriverException: Session [fa85a873-517b-4054-8690-cccc02e17f41] was terminated due to CLIENT_GONE
Command duration or timeout: 2.56 seconds
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.5.0-49-generic', java.version: '1.7.0_60'
Session ID: fa85a873-517b-4054-8690-cccc02e17f41
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{platform=LINUX, chrome.chromedriverVersion=26.0.1383.0, acceptSslCerts=false, javascriptEnabled=true, browserName=chrome, rotatable=false, locationContextEnabled=false, webdriver.remote.sessionid=fa85a873-517b-4054-8690-cccc02e17f41, version=26.0.1410.63, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}]
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:187)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:307)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:348)
    at org.openqa.selenium.By$ById.findElement(By.java:216)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:299)
    at org.openqa.selenium.remote.Augmenter$CompoundHandler.intercept(Augmenter.java:280)
    at org.openqa.selenium.remote.RemoteWebDriver$$EnhancerByCGLIB$$29d6fa2e.findElement(<generated>)
    at org.openqa.selenium.support.ui.ExpectedConditions.findElement(ExpectedConditions.java:523)
    at org.openqa.selenium.support.ui.ExpectedConditions.access$0(ExpectedConditions.java:521)
    at org.openqa.selenium.support.ui.ExpectedConditions$10.apply(ExpectedConditions.java:289)
    at org.openqa.selenium.support.ui.ExpectedConditions$10.apply(ExpectedConditions.java:1)
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
    at com.tools.selenium.CoreDriver.waitForElementToBeInvisible(CoreDriver.java:300)
    at com.tools.selenium.CoreDriver.waitForElementToBeInvisible(CoreDriver.java:288)
    at com.foo.bar.reviewtest.ResponseTest.loginOnVisit(ResponseTest.java:55)
    at com.foo.bar.reviewtest.ResponseTest.runATest(ResponseTest.java:44)
    at com.foo.bar.reviewtest.UserTestBase.testDriver(UserTestBase.java:129)
Caused by: org.openqa.grid.common.exception.GridException: Session [fa85a873-517b-4054-8690-cccc02e17f41] was terminated due to CLIENT_GONE
    at org.openqa.grid.internal.ActiveTestSessions.getExistingSession(ActiveTestSessions.java:104)
    at org.openqa.grid.internal.Registry.getExistingSession(Registry.java:423)
    at org.openqa.grid.web.servlet.handler.RequestHandler.getSession(RequestHandler.java:234)
    at org.openqa.grid.web.servlet.handler.RequestHandler.process(RequestHandler.java:116)
    at org.openqa.grid.web.servlet.DriverServlet.process(DriverServlet.java:84)
    at org.openqa.grid.web.servlet.DriverServlet.doPost(DriverServlet.java:68)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.seleniumhq.jetty7.servlet.ServletHolder.handle(ServletHolder.java:565)
    at org.seleniumhq.jetty7.servlet.ServletHandler.doHandle(ServletHandler.java:479)
    at org.seleniumhq.jetty7.server.session.SessionHandler.doHandle(SessionHandler.java:225)
    at org.seleniumhq.jetty7.server.handler.ContextHandler.doHandle(ContextHandler.java:1031)
    at org.seleniumhq.jetty7.servlet.ServletHandler.doScope(ServletHandler.java:406)
    at org.seleniumhq.jetty7.server.session.SessionHandler.doScope(SessionHandler.java:186)
    at org.seleniumhq.jetty7.server.handler.ContextHandler.doScope(ContextHandler.java:965)
    at org.seleniumhq.jetty7.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.seleniumhq.jetty7.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
    at org.seleniumhq.jetty7.server.Server.handle(Server.java:349)
    at org.seleniumhq.jetty7.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:452)
    at org.seleniumhq.jetty7.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47)
    at org.seleniumhq.jetty7.server.AbstractHttpConnection.content(AbstractHttpConnection.java:894)
    at org.seleniumhq.jetty7.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:948)
    at org.seleniumhq.jetty7.http.HttpParser.parseNext(HttpParser.java:857)
    at org.seleniumhq.jetty7.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.seleniumhq.jetty7.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66)
    at org.seleniumhq.jetty7.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254)
    at org.seleniumhq.jetty7.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)
    at org.seleniumhq.jetty7.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
    at java.lang.Thread.run(Thread.java:722)
... Removed 30 stack frames