Cuál es la diferencia entre esto
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
¿Cuál usar y cuándo?
selenium-webdriver
Puran Joshi
fuente
fuente
Respuestas:
Esta es una buena pregunta que he visto a personas usar Close () cuando no deberían. Busqué en el código fuente los enlaces Selenium Client & WebDriver C # y encontré lo siguiente.
webDriver.Close()
- Cierre la ventana del navegador en la que se centra el controladorwebDriver.Quit()
- Descartar llamadas ()webDriver.Dispose()
Cierra todas las ventanas del navegador y finaliza la sesión de forma segura.El siguiente código eliminará el objeto del controlador, finaliza la sesión y cierra todos los navegadores abiertos durante una prueba, ya sea que la prueba falle o pase.
En resumen, asegúrese de llamar a Quit () o Dispose () antes de salir del programa, y no use el método Close () a menos que esté seguro de lo que está haciendo.
Tenga en cuenta
que encontré esta pregunta cuando traté de descubrir un problema relacionado por el cual mis máquinas virtuales se estaban quedando sin espacio en el disco duro. Resulta que una excepción estaba causando que no se llamara a Quit () o Dispose () en cada ejecución, lo que causó que la carpeta appData llene el disco duro. Así que estábamos usando el método Quit () correctamente pero el código era inalcanzable. Resumen asegúrese de que todas las rutas de código limpiarán sus objetos no administrados mediante el uso de patrones seguros de excepción o implementarán IDisposable
También
en el caso de RemoteDriver, al llamar a Quit () o Dispose () también se cerrará la sesión en el servidor Selenium. Si la sesión no se cierra, los archivos de registro para esa sesión permanecen en la memoria.
fuente
Quit()
es una redirección aDispose()
Close()
- Se utiliza para cerrar el navegador o la página que actualmente está teniendo el foco.Quit()
- Se utiliza para cerrar la instancia del controlador web o destruir la instancia del controlador web (cierre todas las ventanas).Dispose()
- No conozco este método.fuente
Quit
yDispose
deberían ser sinónimos entre sí. En otras palabras,Quit
llamadasDispose
.driver.close
ydriver.quit
son dos métodos diferentes para cerrar la sesión del navegador en Selenium WebDriver. Comprenderlos a ambos y saber cuándo usar cada método es importante en la ejecución de su prueba. Por lo tanto, he tratado de arrojar algo de luz sobre estos dos métodos.driver.close
- Este método cierra la ventana del navegador en la que se establece el foco. A pesar del nombre familiar para este método,WebDriver
no no implementar elAutoCloseable
interfaz .driver.quit
- Este método básicamente llama adriver.dispose
un método ahora interno que a su vez cierra todas las ventanas del navegador y finaliza la sesión de WebDriver con gracia.driver.dispose
- Como se mencionó anteriormente, es un método interno de WebDriver que se ha eliminado silenciosamente de acuerdo con otra respuesta: se necesita verificación. Este método realmente no tiene un caso de uso en un flujo de trabajo de prueba normal, ya que cualquiera de los métodos anteriores debería funcionar para la mayoría de los casos de uso.Explicación del caso de uso: debe usarlo
driver.quit
siempre que desee finalizar el programa. Cerrará todas las ventanas abiertas del navegador y finalizará la sesión de WebDriver. Si no lo utilizadriver.quit
al final del programa, la sesión de WebDriver no se cerrará correctamente y los archivos no se borrarán de la memoria. Esto puede provocar errores de pérdida de memoria.La explicación anterior debe explicar la diferencia entre
driver.close
y losdriver.quit
métodos en WebDriver. Espero que le sea útil.El siguiente sitio web tiene algunos buenos consejos sobre las pruebas de selenio: Enlace
fuente
quit()
: Sale de este controlador y cierra todas las ventanas asociadas que estaban abiertas.close()
: Cierre la ventana actual y salga del navegador si es la última ventana abierta actualmente.fuente
close (): - Suponga que ha abierto varias ventanas del navegador con la misma instancia del controlador, ahora al llamar a close () en la instancia del controlador cerrará la ventana actual a la que apunta la instancia del controlador. Pero la instancia del controlador aún permanece en la memoria y se puede usar para manejar otras ventanas abiertas del navegador.
quit (): - Si llama a quit () en la instancia del controlador y hay una o más ventanas abiertas del navegador, cerrará todas las ventanas abiertas del navegador y la instancia del controlador es basura recolectada, es decir, eliminada de la memoria. Entonces, ahora no puede usar esta instancia de controlador para realizar otra operación después de llamar a quit () en ella. Si lo haces, lanzará una excepción.
dispose (): - No creo que haya un método de eliminación para una instancia de WebDriver.
Puede ir al enlace oficial de este documento java doc de selenio como referencia.
fuente
Basado en un problema en Github de PhantomJS, quit () no termina el proceso PhantomJS. Deberías usar:
enlace
fuente
close () es un comando webdriver que cierra la ventana del navegador que está actualmente en foco. A pesar del nombre familiar para este método,
WebDriver
no no implementar elAutoCloseable
interfaz .Durante el proceso de automatización, si hay más de una ventana de navegador abierta, entonces el comando close () cerrará solo la ventana actual del navegador que se está enfocando en ese momento. Las ventanas restantes del navegador no se cerrarán. El siguiente código se puede usar para cerrar la ventana actual del navegador:
quit () es un comando webdriver que llama al método driver.dispose, que a su vez cierra todas las ventanas del navegador y finaliza la sesión de WebDriver. Si no usamos quit () al final del programa, la sesión de WebDriver no se cerrará correctamente y los archivos no se borrarán de la memoria. Esto puede provocar errores de pérdida de memoria.
Si el proceso de Automatización abre solo una ventana del navegador, los comandos close () y quit () funcionan de la misma manera. Ambos diferirán en su funcionalidad cuando haya más de una ventana de navegador abierta durante la Automatización.
Para la referencia anterior: haga clic aquí
El comando Dispose Dispose () debería llamar a Quit (), y parece que sí. Sin embargo, también tiene el mismo problema porque las acciones posteriores se bloquean hasta que PhantomJS se cierra manualmente.
Enlace de referencia
fuente
Diferencia entre driver.close () y driver.quit ()
driver.close: cierra la ventana del navegador en la que se establece el foco.
driver.quit: básicamente llama al método driver.dispose que a su vez cierra todas las ventanas del navegador y finaliza la sesión de WebDriver con gracia.
fuente
Selenium WebDriver
WebDriver.Close()
Este método se utiliza para cerrar la ventana abierta actual. Cierra la ventana abierta actual en la que se centra el controlador.WebDriver.Quit()
Este método se usa para destruir la instancia de WebDriver. Cierra todas las ventanas del navegador asociadas con ese controlador y finaliza la sesión de forma segura. WebDriver.Quit () llama a Dispose.WebDriver.Dispose()
Este método cierra todas las ventanas del navegador y finaliza la sesión de forma segurafuente
Tengo entendido
driver.close();
que cerrará el navegador actual ydriver.quit();
terminará todo el navegador que.fuente