2012-06-25 13 views
5

Attualmente sto eseguendo i miei test con RemoteWebDriver con Selenium Grid 2 attraverso le suite TestNG. Funziona perfettamente con Firefox e IE. Ora ho aggiunto Chrome e i test funzionano bene, ma ottengo sempre un'eccezione quando chiamo driver.quit() dopo tutti i test di una suite (funziona bene per FF e IE).Come chiudere un ChromeDriver mentre è in esecuzione su Grid?

L'eccezione si presenta così:

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) 

Sto usando Selenio versione 2.24.1 e chromedriver.exe 21.0.1180.4

EDIT

Codice per tearDown:

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

Funziona perfettamente per F F e IE con RemoteDriver e senza. Ma non per il cromo.

+0

Puoi postare il codice in setups.StandardChromeSetup.tearDown –

+0

aggiunto le informazioni su tearDown non è niente di originale – Tarken

+0

stessa configurazione e lo stesso problema qui- Ho anche ricevuto un messaggio OS che chromedriver.exe non funziona più, quando confermo Google Chrome viene ucciso. –

risposta

3

Di fronte allo stesso problema. Here è come l'ho risolto. Questo sembra essere un bug con la nuova versione del driver Chrome. Utilizzando la versione precedente del driver (20.0.1133.0) ho risolto questo problema per me.

Verificare driver download page.

+0

Attualmente sono in vacanza quindi non posso testarlo ;-) Quando torno al lavoro e funziona, accetterò la tua risposta. Grazie – Tarken

2

Vedo che la causa di ciò potrebbe essere che non si stanno chiudendo i browser attivi prima di uscire dallo Driver. Provate a chiudere le finestre, che possono essere la causa di alcune eccezioni, con il seguente codice:

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

Questo dovrebbe risolvere il problema.

+0

Ricevo lo stesso problema, ma chiamare Close() prima di Quit() non è stato di aiuto. – legion