2012-06-25 15 views
5

Obecnie przeprowadzam moje testy z RemoteWebDriver z Selenium Grid 2 poprzez TestNG suites. Działa to dobrze w Firefoksie i IE. Teraz dodałem Chrome i testy działają dobrze, ale zawsze otrzymuję wyjątek podczas wywoływania sterownika driver.quit() po wszystkich testach pakietu (działa dobrze dla FF i IE).Jak zamknąć kontroler ChromeDriver podczas działania w sieci?

Wyjątek wygląda następująco:

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) 

Używam selen w wersji 2.24.1 i chromedriver.exe 21.0.1180.4

EDIT

kod do zniszczeń:

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

Działa idealnie dla F F i IE z RemoteDriver i bez. Ale nie dla chromu.

+0

można pisać kod w setups.StandardChromeSetup.tearDown –

+0

dodał informacji na przerywaniem to nic nadzwyczajnego – Tarken

+0

sama konfiguracja i sam problem tutaj-ja również otrzymuję komunikat os że chromedriver.exe już nie działa, kiedy potwierdzić Google Chrome zostaje zabity. –

Odpowiedz

3

Wobec tego samego problemu. Here to sposób, w jaki go rozwiązałem. To wydaje się być błędem w nowej wersji sterownika Chrome. Korzystanie z poprzedniej wersji sterownika (20.0.1133.0) rozwiązało ten problem dla mnie.

Sprawdź driver download page.

+0

Jestem obecnie na wakacjach, więc nie mogę tego przetestować ;-) Kiedy wrócę do pracy i zadziała, przyjmuję twoją odpowiedź. Dzięki – Tarken

2

Widzę, że przyczyną może być to, że nie zamykasz aktywnych przeglądarek przed zakończeniem pracy z Driver. Spróbuj zamknąć okna, które mogą być przyczyną pewnych wyjątków, z następującego kodu:

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

To powinno rozwiązać problem.

+0

Otrzymuję ten sam problem, ale wywołanie Close() przed Quit() nie pomogło. – legion