Selenio: ¿Cómo detener el proceso de geckodriver impactando en la memoria de la PC, sin llamar a driver.quit ()?

Hay una prueba, como:

import //needed imports public class TestClass{ WebDriver driver; @Before public void setUp() { //some code } @Test public void test1() { //some code, including init of driver (geckodriver) } //@After // public void tearDown() { // driver.quit(); //} } 

Por lo tanto, participé en geckodriver y realicé con éxito mis pruebas utilizando instancias de Firefox. Pero quiero no cerrar la ventana de Firefox después de cada ejecución, porque solo quiero analizar lo que tengo, y corregir lo que sea necesario, después de ejecutar la prueba (voy a desinstalar el driver.quit () más adelante). Al mismo tiempo, cada llamada sin cerrar el controlador provoca un impacto excesivo en la memoria RAM de mi PC (y no importa; cerré el navegador manualmente o no, después de la prueba): enter image description here

Entonces, la pregunta es: ¿hay alguna manera de cerrar el proceso (más precisamente – do smth, que cerrará el proceso geckodriver.exe en taskmgr) de “geckodriver”, pero NO se cerrará el navegador una vez que finalice la prueba? por ejemplo, agregar algún método en la prueba en sí, lo que sea … Esto no afecta mi trabajo / prueba en sí, solo quiero agregar algo de optimización.

De acuerdo con su pregunta comentando driver.quit() simplemente Not to close firefox window after each run, because I just want to analyse what I have no será parte de las mejores prácticas.

Para cualquier análisis detallado, podemos crear entradas de registro y tomar instantáneas.

Mientras se automatiza a través de Selenium según las mejores prácticas, debe invocar el método quit() dentro de tearDown() {} . Invocar quit() DELETE s la sesión de navegación actual enviando el comando “quit” con {“flags”: [“eForceQuit”]} y finalmente envía la solicitud GET en / shutdown EndPoint . Aquí hay un ejemplo a continuación:

 1503397488598 webdriver::server DEBUG -> DELETE /session/8e457516-3335-4d3b-9140-53fb52aa8b74 1503397488607 geckodriver::marionette TRACE -> 37:[0,4,"quit",{"flags":["eForceQuit"]}] 1503397488821 webdriver::server DEBUG -> GET /shutdown 

Por lo tanto, al invocar el método quit() , la sesión del Web Browser y la instancia de WebDriver mueren por completo. Por lo tanto, no tiene que incorporar ningún paso adicional que será una sobrecarga.


Responde a esta pregunta:

Aún así, si desea ejecutar kill las instancias de WebDriver colgantes, por ejemplo, instancias de GeckoDriver.exe , puede usar el siguiente bloque de código para eliminar cualquiera de las instancias de WebDriver colgantes:

 import java.io.IOException; public class Kill_ChromeDriver_GeckoDriver_IEDriverserver { public static void main(String[] args) throws Exception { Runtime.getRuntime().exec("taskkill /F /IM geckodriver.exe /T"); Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe /T"); Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe /T"); } }