¿Qué es Gecko Driver?
El término Gecko significa un motor de navegador web incorporado en el navegador Mozilla Firefox. El controlador Gecko actúa como un proxy entre los clientes habilitados para el controlador web (Eclipse, Netbeans, etc.) y el navegador Mozilla Firefox. En resumen, el controlador Gecko actúa como un enlace entre las pruebas del controlador web Selenium y el navegador Mozilla Firefox.
Antes de Selenium 3, el navegador Mozilla Firefox era el navegador predeterminado para Selenium. Después de Selenium 3, los probadores deben inicializar el script para usar Firefox usando GeckoDriver explícitamente. Selenium usa el protocolo W3C Webdriver para enviar solicitudes a GeckoDriver, que las traduce a un protocolo llamado Marionette. Firefox comprenderá los comandos transmitidos en forma de protocolo Marionette y los ejecutará.
Ventaja de usar Gecko Driver
Selenium Webdriver versión 2.53 no es compatible con Mozilla Firefox versión 47.0+. El controlador de Firefox utilizado en versiones anteriores de Mozilla Firefox se suspenderá y solo se utilizará la implementación de GeckoDriver. Por lo tanto, los evaluadores se ven obligados a usar GeckoDriver si desean ejecutar pruebas automatizadas en Mozilla Firefox versión 47.0+. Pero la gran pregunta: ¿cuál es la ventaja?
La principal ventaja de usar GeckoDriver en comparación con el controlador predeterminado de Firefox es la compatibilidad . GeckoDriver usa el protocolo W3C WebDriver para comunicarse con Selenium. W3C es un estándar definido universalmente para Web Driver. Esto significa que los desarrolladores de Selenium (personas que codifican la base de Selenium) no necesitan crear una nueva versión del controlador web para cada versión del navegador. El mismo controlador web se puede utilizar para varias versiones de navegador. Por lo tanto, se prefiere GeckoDriver en comparación con la implementación anterior del controlador de Firefox.
Descargue e instale el controlador Gecko:
Gecko Driver está disponible como un archivo ejecutable que se puede descargar en el sistema. La siguiente es la lista de pasos para descargar el controlador gecko.
Paso 1) En esta página https://github.com/mozilla/geckodriver/releases, seleccione la versión adecuada para la descarga de GeckoDriver según su sistema operativo
Paso 2) Una vez que se complete la descarga del archivo ZIP, extraiga el contenido del archivo ZIP en una carpeta de archivos
Paso 3) Anote la ubicación donde extrajo el controlador. La ubicación se utilizará más tarde para crear una instancia del controlador.
Formas de inicializar GeckoDriver:
Hay tres formas diferentes de inicializar GeckoDriver.
1. Uso de las capacidades deseadas:
Primero, configure la propiedad del sistema para Gecko Driver.
Sintaxis:
System.setProperty ("webdriver.gecko.driver", "Ruta al archivo geckdriver.exe");
Ejemplo:
System.setProperty ("webdriver.gecko.driver", "D: \\ Descargas \\ GeckoDriver.exe");
A continuación, configure las capacidades deseadas.
Las capacidades deseadas ayudan a Selenium a comprender el nombre del navegador, la versión y el sistema operativo para ejecutar las pruebas automatizadas. A continuación se muestra el código para configurar el controlador gecko usando la clase DesiredCapabilities.
Capacidades DesiredCapabilities = DesiredCapabilities.firefox ();capacidades.setCapabilidad ("marioneta", verdadero);
Aquí está el código completo
System.setProperty ("webdriver.gecko.driver", ruta del controlador);Capacidades DesiredCapabilities = DesiredCapabilities.firefox ();capacidades.setCapabilidad ("marioneta", verdadero);driver = new FirefoxDriver (capacidades);
2. Uso de la propiedad de la marioneta:
El controlador Gecko también se puede inicializar usando la propiedad de marioneta como se muestra a continuación
System.setProperty ("webdriver.gecko.driver", "D: \\ Descargas \\ GeckoDriver.exe");
Si el controlador gecko se inicializa utilizando el método anterior, no se requiere el código para las capacidades deseadas .
3. Usando FirefoxOptions:
Mozilla Firefox versión 47+ tiene un controlador de marioneta como sistema heredado. Aprovechando esto, se puede llamar al controlador de marionetas usando las Opciones de Firefox como se muestra a continuación
Opciones de FirefoxOptions = new FirefoxOptions ();options.setLegacy (verdadero);
Código para iniciar Firefox usando el controlador Gecko:
paquete com.guru99.demo;import org.junit.After;import org.junit.Before;import org.junit.Test;importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.firefox.FirefoxDriver;importar org.openqa.selenium.remote.DesiredCapabilities;public class GeckoDriverDemo {String driverPath = "D: \\ Guru99Demo \\ GeckoDriver.exe";controlador WebDriver público;@Antespublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", ruta del controlador);Capacidades DesiredCapabilities = DesiredCapabilities.firefox ();capacidades.setCapabilidad ("marioneta", verdadero);driver = new FirefoxDriver (capacidades);}@Pruebapublic void navigateToUrl () {driver.get ("http://demo.guru99.com/selenium/guru99home/");}@Despuéspublic void endTest () {driver.quit ();}}
Explicación del código:
Método @Before:
Inicialmente, necesitamos establecer la propiedad del sistema para el controlador gecko en la ubicación de descarga del archivo geckdriver.exe. Necesitamos establecer la propiedad marionette en true para que Selenium use el protocolo Marionette para comunicarse con Gecko Driver. Finalmente, necesitamos iniciar la instancia del navegador Firefox usando el objeto de Capacidades deseadas.
Las siguientes declaraciones ayudan a lograr la tarea anterior.
System.setProperty ("webdriver.gecko.driver", ruta del controlador);Capacidades DesiredCapabilities = DesiredCapabilities.firefox ();capacidades.setCapabilidad ("marioneta", verdadero);driver = new FirefoxDriver (capacidades);
@Método de prueba:
Estamos navegando a la URL especificada por el usuario utilizando el método "get" incorporado proporcionado por el controlador web Selenium. La siguiente declaración ayuda a lograr lo mismo.
driver.get ("http://demo.guru99.com/selenium/guru99home/");
@Después del método:
Finalmente, cerramos la instancia del navegador usando el método quit.
driver.quit ();
Modifique un script para que no sea Gecko a Gecko:
El script de controlador no gecko utilizado antes de Selenium 3 era sencillo. Necesitamos crear una instancia del controlador de Firefox y usar la variable de instancia.
@Antespublic void startBrowser () {controlador = nuevo FirefoxDriver ();}
Para convertir a gecko, simplemente debe agregar una línea de código
@Antespublic void startBrowser () {System.setProperty ("webdriver.gecko.driver", "D: \\ Descargas \\ GeckoDriver.exe");controlador = nuevo FirefoxDriver ();}
Ocurrieron excepciones comunes al usar Gecko Driver:
A continuación se muestra una lista de excepciones comunes que ocurren al usar Gecko Driver y con resolución.
1. La ruta al ejecutable del controlador debe ser establecida por la propiedad del sistema webdriver.gecko.driver:
Esta excepción ocurre cuando el usuario intenta crear una instancia del controlador de Firefox sin configurar la propiedad del sistema para el controlador gecko. Esto generalmente lo hacen los principiantes en Selenium que no están al tanto de los cambios realizados desde Selenium 3 a las versiones anteriores de Selenium.
La resolución para la excepción anterior es establecer la propiedad del sistema para el controlador gecko con la ubicación del archivo geckodriver.exe como se muestra a continuación
System.setProperty ("webdriver.gecko.driver", "D: \\ Descargas \\ geckodriver.exe");
Tenga en cuenta que debe establecer la propiedad del controlador gecko antes de crear una instancia del controlador Mozilla Firefox.
2. Excepción de Firefox no conectado:
org.openqa.selenium.firefox.NotConnectedException: no se puede conectar al host 127.0.0.1 en el puerto 7055 después de 45000 ms.
Esta excepción suele ocurrir cuando la versión de Firefox se ha actualizado a la última versión. La solución para esta excepción es actualizar el archivo jar de selenium y el controlador gecko a la última versión y usar el mismo.
3. Excepción de sesión no creada:
org.openqa.selenium.SessionNotCreatedException: No se puede crear una nueva sesión remota.
Esta excepción se produce debido a problemas de compatibilidad entre el controlador Selenium y Gecko. El controlador Gecko funciona con Firefox versión 47 o superior. Se puede resolver actualizando la versión de Firefox a 47 o superior.
4. Excepción de conexión rechazada:
Excepción de WebDriver: conexión rechazada
Esta excepción es el mensaje generado cuando el controlador web no puede establecer una conexión con Firefox. Puede resolverse mediante cualquiera de las siguientes técnicas.
- Utilice el método driver.quit () para destruir instancias anteriores del controlador web
- Limpia la caché del navegador antes de ejecutar tus pruebas automatizadas
- Limpiar el espacio de trabajo del proyecto dentro de Eclipse IDE
- Utilice siempre la última versión del controlador selenium gecko y la versión más reciente del navegador Firefox