如何在网格上运行时关闭ChromeDriver?

我目前正在使用带有Selenium Grid 2的RemoteWebDriver通过TestNG套件运行我的测试。 这适用于Firefox和IE。 现在我添加了Chrome并且测试运行正常,但是在套件的所有测试之后调用driver.quit()时总是得到一个Exception(适用于FF和IE)。

Exception看起来像这样:

Error communicating with the remote browser. It may have died. sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:472) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:476) at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:346) at setups.StandardChromeSetup.tearDown(StandardChromeSetup.java:42) 19 lines not shown Caused by Error communicating with the remote browser. It may have died. org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:467) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:476) at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:346) 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:601) at org.openqa.selenium.support.events.EventFiringWebDriver$2.invoke(EventFiringWebDriver.java:101) at $Proxy1.quit(Unknown Source) at org.openqa.selenium.support.events.EventFiringWebDriver.quit(EventFiringWebDriver.java:194) at org.openqa.selenium.remote.server.handler.DeleteSession.call(DeleteSession.java:42) at org.openqa.selenium.remote.server.handler.DeleteSession.call(DeleteSession.java:1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:150) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) 

我使用Selenium版本2.24.1和chromedriver.exe 21.0.1180.4

编辑

撕裂代码:

 @AfterSuite public void tearDown(){ driver.quit(); } 

适用于使用RemoteDriver和没有的FF和IE。 但不是铬。

面临同样的问题。 这是我如何解决它。 这似乎是新版Chrome驱动程序的一个错误。 使用以前版本的驱动程序(20.0.1133.0)为我解决了这个问题。

检查驱动程序下载页面 。

我看到原因可能是您在退出Driver之前没有关闭活动浏览器。 尝试使用以下代码关闭窗口,这可能是一些exception的原因:

 Driver.Close(); Driver.Quit(); 

这应该可以解决您的问题。