geckodriver selenium tutorial
Tutorial de GeckoDriver Selenium: Aprenda a usar el controlador Gecko (Marionette) en Selenium
Para entender qué es GeckoDriver, inicialmente necesitamos saber sobre Gecko y el motor del navegador web. Este tutorial cubre casi todas las funciones relacionadas con GeckoDriver, brindándole así una descripción general completa.
Entonces, para empezar, primero déjenos saber qué es Gecko y qué es un motor de navegador web.
Lo que vas a aprender:
- ¿Qué es Gecko?
- ¿Qué es un motor de navegador web?
- ¿Qué es GeckoDriver?
- ¿Por qué Selenium necesita GeckoDriver?
- ¿Cómo usar GeckoDriver en Selenium Project?
- GeckoDriver y TestNG
- Pasos para agregar una ruta en la variable ambiental PATH del sistema
- Problemas sin el controlador Gecko
- Información adicional sobre GeckoDriver
- Conclusión
- Lectura recomendada
¿Qué es Gecko?
Gecko es un motor de navegador web. Hay varias aplicaciones que requieren Gecko. En concreto, las aplicaciones desarrolladas por Mozilla Foundation y Mozilla Corporation. Gecko también es una necesidad para muchos proyectos de software de código abierto. Gecko está escrito en C ++ y JavaScript.
Las últimas versiones también están escritas en Rust. Gecko es un motor de navegador web gratuito y de código abierto.
¿Qué es un motor de navegador web?
Web Browser Engine no es más que un programa de software. La función principal de este programa es recopilar el contenido (como HTML, XML, imágenes) y formatear la información (como CSS) y mostrar este contenido formateado en la pantalla. El motor del navegador web también se denomina motor de diseño o motor de representación.
Aplicaciones como navegadores web, clientes de correo electrónico, lectores de libros electrónicos, sistemas de ayuda en línea, etc. necesitan mostrar contenido web. Y para mostrar el contenido web, se requiere el motor del navegador web y es parte de todas estas aplicaciones. Hay diferentes motores de navegador web para cada navegador web.
La siguiente tabla muestra los navegadores web y los motores de navegador web que utilizan.
Gecko se ejecuta en el siguiente sistema operativo sin emulación:
- Ventanas
- Mac OS
- Linux
- BSD
- Unix
No se puede ejecutar en un sistema operativo Symbian.
¿Qué es GeckoDriver?
GeckoDriver es un enlace de conexión al navegador Firefox para su guiones en selenio . GeckoDriver es un proxy que ayuda a comunicarse con los navegadores basados en Gecko (por ejemplo, Firefox), para los que proporciona API HTTP.
¿Por qué Selenium necesita GeckoDriver?
Firefox (versión 47 y superior) ha realizado algunos cambios y, por algunas razones de seguridad, no permite que ningún controlador de terceros interactúe directamente con los navegadores. Por lo tanto, no podemos usar Selenium2 con las últimas versiones de Firefox. Entonces necesitamos Selenium3.
Selenium3 tiene controlador de marionetas. Selenium3 puede interactuar directamente con el navegador Firefox usando un proxy, que no es más que el GeckoDriver.
¿Cómo usar GeckoDriver en Selenium Project?
- Consideremos que tiene la última versión de Selenium WebDriver y el navegador Firefox.
- Luego descargue el GeckoDriver de aquí . Luego, elija la versión que sea adecuada para su computadora.
- Extraer archivos de la carpeta comprimida
- Agregue las referencias de las bibliotecas Selenium3 en su proyecto a través de- Haga clic derecho en el proyecto => Ruta de compilación => Configurar ruta de compilación => Bibliotecas => Agregar jarras externas.
- Seleccione Carpeta Lib => Haga clic en Clt + A => Haga clic en Abrir .
- Después de ti haga clic en abrir , verá la siguiente ventana:
- Luego haga clic en Aceptar.
- Ahora escribamos nuestro código y usemos la propiedad del sistema para especificar la ruta de GeckoDriver.
- Agregue la siguiente línea en su código:
** [ Cómo copiar la dirección del archivo extraído. - (Presione 'Shift' en el teclado y haga clic con el botón derecho en el archivo; aparecerá una opción. Luego, 'Copiar la dirección del archivo'.)]
** [ En esta copia de la ruta pegada, asegúrese de que haya una barra invertida doble, de lo contrario el código tendrá un error de sintaxis.]
Tomemos un ejemplo
Ejemplo
Aquí hay solo un script simple, donde abrimos la página web de Google en un navegador Firefox y verificamos el título de la página web.
Código1:
|_+_|Entendiendo el Código
# 1) importar org.openqa.selenium.WebDriver- Aquí estamos importando todas las referencias a la interfaz de WebDriver. Más adelante, se requiere esta interfaz de WebDriver para crear una instancia de un nuevo navegador.
# 2) importar org.openqa.selenium.firefox.FirefoxDriver- Aquí estamos importando todas las referencias a la clase FirefoxDriver.
#3) setProperty (clave de cadena, valor de cadena) - Aquí establecemos la propiedad del sistema proporcionando el nombre de la propiedad que se llama como Clave y su ruta que se llama Valor.
Llave -Nombre de la propiedad del sistema, es decir webdriver.gecko.driver .
Valor - Dirección del archivo exe de Gecko Driver.
#4) Controlador WebDriver = nuevo FirefoxDriver () - En esta línea de código estamos creando la variable de referencia 'controlador' del WebDriver y esta variable de referencia se inicia usando la clase FirefoxDriver. Se lanzará un perfil de Firefox sin extensiones ni complementos con la instancia de Firefox.
#5) get ('URL') - Usando este método Get podemos abrir la URL especificada en el navegador. Este método Get se llama utilizando la variable de referencia de WebDriver, es decir, el controlador. La cadena se pasa al método Get, lo que significa que la URL de nuestra aplicación se pasa a este método Get.
# 6) administrar (). Ventana (). Maximizar () - Usando esta línea de código estamos maximizando la ventana del navegador. Tan pronto como el navegador abre la URL especificada, se maximiza usando esta línea.
# 7) getTitle () - Usando esta línea de código, podremos encontrar el título de la página web. Este método también se llama utilizando la variable de referencia 'controlador' de WebDriver. Estamos guardando este título en la variable de cadena 'appTitle'.
# 8) Comparación– Aquí estamos comparando el appTitle (que pasará driver.getTitle () método) y el expTitle (que es 'Google') mediante la declaración If. Es solo una simple declaración If-else. Cuando se cumple la condición 'Si', estamos imprimiendo el mensaje 'Verificación Exitosa'; de lo contrario, estamos imprimiendo el mensaje 'Verificación Fallida'.
|_+_|#9) driver.close () - Esta línea de código cierra el navegador. Esta línea cierra solo la ventana actual.
#10) System.exit (0) - Esta línea de método de código se utiliza para terminar la ejecución de Java Virtual Machine. Por lo que se recomienda cerrar todas las ventanas o archivos abiertos antes de esta línea.
GeckoDriver y TestNG
No hay mucha diferencia en el código, pero aquí estoy agregando un código solo para su referencia.
EJEMPLO:
Pasemos al ejemplo. Nuestro ejemplo es abrir la página web Google.com, obtener su título e imprimirlo.
Código2:
|_+_|Puntos para recordar al escribir código TestNG:
#1) Utilice el método System.setProperty (String key, String value) dentro de la función f () igual que en el ejemplo anterior. En ese ejemplo, lo escribimos en la función principal. Sin embargo, en TestNG, no hay funciones main (). Si lo escribe fuera de la función, obtendrá un error de sintaxis.
#2) La segunda cosa más importante para recordar es System.exit (0). No es necesario agregar esta línea de código en su secuencia de comandos TestNG. Hay una razón para eso: después de ejecutar el script TestNG, se genera la carpeta de salida donde puede ver los informes generados y el resultado, si agrega System.exit (0) en su script, esta carpeta (carpeta de salida) no se obtendrá generado y no podrá ver los informes.
Pasos para agregar una ruta en la variable ambiental PATH del sistema
- En el sistema Windows, haga clic derecho en Mi PC o Esta PC.
- Seleccione Propiedades.
- Seleccione la configuración avanzada del sistema.
- Haga clic en el botón Variables de entorno.
- En Variables del sistema, seleccione RUTA.
- Haga clic en el botón Editar.
- Haga clic en el botón Nuevo
- Pegue la ruta del archivo GeckoDriver.
- Haga clic en Aceptar.
Problemas sin el controlador Gecko
Es posible que enfrente algunos problemas como los que se indican a continuación.
#1) Si está utilizando una versión anterior de Firefox y Selenium3, obtendrá la siguiente excepción:
cuál es la fase de implementación en el sdlc
Excepción en el hilo 'principal' java.lang.IllegalStateException
#2) Si está utilizando la última versión de Firefox y una versión anterior de Selenium, obtendrá la siguiente excepción:
org.openqa.selenium.firefox.NotConnectedException : No se puede conectar al host 127.0.0.1 en el puerto 7055 después de 45000 ms
#3) Si está usando la última versión de Firefox y WebDriver, pero no usa GeckoDriver, obtendrá la siguiente excepción:
Excepción en el hilo 'main' java.lang.IllegalStateException: La ruta al ejecutable del controlador debe ser establecida por la propiedad del sistema webdriver.gecko.driver; Para más información, ver aquí .La última versión se puede descargar desde aquí .
Información adicional sobre GeckoDriver
Como sabemos, GeckoDriver es un proxy que ayuda a comunicarse con los navegadores basados en Gecko (por ejemplo, Firefox), para lo cual proporciona una API HTTP.
Esta API HTTP se puede entender utilizando el protocolo WebDriver. Hay algunos nodos en el protocolo WebDriver que incluyen el extremo local, el extremo remoto, el nodo intermedio y el nodo de punto final. La comunicación entre estos nodos se describe en el protocolo WebDriver.
El extremo local es el lado del cliente del protocolo WebDriver. El extremo remoto significa el lado del servidor del protocolo WebDriver. El nodo intermedio desempeña la función de proxy. El nodo de punto final se pone en marcha mediante un agente de usuario o un programa similar.
Los comandos y respuestas enviados por WebDriver a GeckoDriver se traducen a Marionette Protocol y luego se transfieren a Marionette Driver por GeckoDriver. Así que concluimos diciendo que GeckoDriver está actuando como un proxy entre estos dos WebDriver y Marionette.
Marionette se divide en 2 partes, que es la parte del servidor y la parte del cliente. Los comandos enviados por la parte del cliente son ejecutados por la parte del servidor.
Este trabajo de ejecución de comandos se realiza dentro del navegador. Marionette no es más que una combinación de un componente gecko (que es un servidor de Marionette) y un componente externo (que se denomina Cliente Marionette). GeckoDriver está escrito en el lenguaje de programación Rust.
Conclusión
GeckoDriver es un factor intermedio entre sus scripts de Selenium y los navegadores basados en Gecko como Firefox.
GeckoDriver es un proxy para comunicarse con navegadores basados en Gecko ( P.ej. Firefox). Firefox (versión 47 y superior) ha realizado algunos cambios, lo que ha impedido que los controladores de terceros puedan interactuar directamente con los navegadores.
Esta es la razón principal por la que necesitamos usar GeckoDriver. La forma más fácil de usar GeckoDriver en su script es implementar el uso de Propiedad System.set. [System.setProperty (“webdriver.gecko.driver”, ”Ruta del archivo del controlador Gecko”)].
¿Eres nuevo en GeckoDriver? ¿Aprendiste algo nuevo hoy en este GeckoDriver Selenium? ¿O tienes algo interesante que compartir con nosotros sobre GeckoDriver? No dude en expresar sus pensamientos en la sección de comentarios a continuación.
Lectura recomendada
- Tutorial de Cucumber Selenium: Integración de Cucumber Java Selenium WebDriver
- Introducción a Selenium WebDriver - Tutorial de Selenium n. ° 8
- Tutorial de búsqueda de elementos por texto de selenio con ejemplos
- Implementación de nuestro primer script de WebDriver - Tutorial de Selenium WebDriver # 10
- Cómo manejar alertas / ventanas emergentes en Selenium WebDriver - Tutorial de Selenium n. ° 16
- Configuración e instalación completa de WebDriver con Eclipse - Tutorial de Selenium n. ° 9
- Tutoriales detallados de Eclipse para principiantes
- Scripts eficientes de Selenium y escenarios de resolución de problemas: tutorial de Selenium n. ° 27