¿Qué es un controlador Gecko?
El término Gecko significa motor de navegador web construido dentro del 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 predeterminado de Selenium era Mozilla Firefox. Después de Selenium 3, los probadores deben iniciar el script para usar Firefox explícitamente usando GeckoDriver. Selenium usa el protocolo W3C Webdriver para enviar solicitudes a GeckoDriver, que las traduce a un protocolo llamado Marionette. Firefox comprende los comandos transmitidos en forma de protocolo Marionette y los ejecuta.
Ventaja de usar Gecko Driver
La versión 2.53 Selenium Webdriver no es compatible con la versión 47.0+ de Mozilla Firefox. El controlador de Firefox utilizado en versiones anteriores de Mozilla Firefox se interrumpirá y solo se utilizará la implementación de GeckoDriver. Por lo tanto, los probadores se ven obligados a usar GeckoDriver si desean ejecutar pruebas automatizadas en la versión 47.0+ de Mozilla Firefox. Pero la gran pregunta: ¿cuál es la ventaja?
La principal ventaja de usar GeckoDriver sobre el controlador predeterminado de Firefox Compatibilidad. Utiliza GeckoDriver Protocolo W3C WebDriver comunicarse con Selenium. W3C es un estándar definido universalmente para Web Driver. Esto significa que los desarrolladores de selenium (personas que codifican selenium base) no necesitan crear una nueva versión de Web Driver para todas las versiones del navegador. El mismo controlador web se puede utilizar para varias versiones de un navegador. Por lo tanto, GeckoDriver es mejor 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 al sistema. La siguiente es una lista de pasos para descargar el controlador gecko.
Paso 1) En esta pagina https://github.com/mozilla/geckodriver/releases , Seleccione la versión apropiada para descargar GeckoDriver según su sistema operativo
Paso 2) Cuando se complete la descarga del archivo ZIP, elimine el contenido del archivo ZIP en una carpeta de archivos
Paso 3) Tenga en cuenta de dónde sacó el controlador. Se utilizará una ubicación posterior para colocar instantáneamente el controlador.
Formas de iniciar GeckoDriver:
Hay tres formas diferentes de iniciar GeckoDriver.
1. Uso de capacidades deseables:
Primero, configure las propiedades del sistema para Gecko Driver.
Sintaxis:
System.setProperty("webdriver.gecko.driver","Path to geckdriver.exe file");
Ejemplo:
System.setProperty("webdriver.gecko.driver","D:\Downloads\GeckoDriver.exe");
A continuación, configure las capacidades deseables.
Deseable Capabilities ayuda a Selenium a comprender el nombre, la versión y el sistema operativo del navegador para realizar las pruebas automatizadas. A continuación se muestra el código para reparar el controlador gecko usando la clase DesiredCapabilities.
DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette",true);
Aquí está el código completo
System.setProperty("webdriver.gecko.driver", driverPath); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette",true); driver= new FirefoxDriver(capabilities);
2. Uso de la propiedad de la marioneta:
El controlador Gecko también se puede iniciar usando la propiedad de marioneta como se muestra a continuación
System.setProperty("webdriver.gecko.driver","D:\Downloads\GeckoDriver.exe");
Si se inicia un controlador gecko utilizando el método anterior, se requiere el código para las capacidades no necesario.
3. Usando FirefoxOptions:
La versión 47+ del sistema Mozilla Firefox tiene un controlador de marioneta como sistema heredado. Aprovechando esto, puede llamar a un controlador de marionetas usando las Opciones de Firefox como se muestra a continuación
FirefoxOptions options = new FirefoxOptions(); options.setLegacy(true);
Código para iniciar Firefox usando el controlador Gecko:
package com.guru99.demo; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.remote.DesiredCapabilities; public class GeckoDriverDemo { String driverPath = "D:\Guru99Demo\GeckoDriver.exe"; public WebDriver driver; @Before public void startBrowser() { System.setProperty("webdriver.gecko.driver", driverPath); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); driver = new FirefoxDriver(capabilities); } @Test public void navigateToUrl() { driver.get("http://demo.guru99.com/selenium/guru99home/"); } @After public void endTest() { driver.quit(); } }
Explicación del Código:
@ Modo antes:
Primero, debemos configurar la propiedad del sistema para el controlador gecko en la ubicación de descarga del archivo geckdriver.exe. Necesitamos establecer la propiedad de marioneta real para que Selenium use el protocolo Marionette para comunicarse con Gecko Driver. Finalmente, necesitamos iniciar el caso del navegador Firefox usando el objeto de Capacidades deseables.
Las siguientes declaraciones ayudan a realizar la tarea anterior.
System.setProperty("webdriver.gecko.driver", driverPath); DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette",true); driver= new FirefoxDriver(capabilities);
@Método de prueba:
Estamos navegando a una URL especificada por el usuario utilizando el método «buscar» integrado proporcionado por el controlador web de 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 modo de salida.
driver.quit();
Cambie el script para los que no son Gecko a Gecko:
Un script de controlador no gecko utilizado antes de Selenium 3 era simple. Necesitamos crear un ejemplo de un controlador de Firefox y usar la variable de ejemplo.
@Before public void startBrowser() { driver = new FirefoxDriver(); }
Para convertir a gecko, solo necesita agregar una línea de código
@Before public void startBrowser() { System.setProperty("webdriver.gecko.driver", "D:\Downloads\GeckoDriver.exe"); driver = new FirefoxDriver(); }
Se han producido excepciones comunes al usar Gecko Driver:
La siguiente es una lista de excepciones comunes que ocurren al usar Gecko Driver y una solución.
1. La ruta al controlador ejecutable debe establecerse en la propiedad del sistema webdriver.gecko.driver:
Esta excepción ocurre cuando un usuario intenta instalar el controlador de Firefox instantáneamente sin arreglar las propiedades 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 el selenio 3 a las versiones anteriores de Selenium.
La intención de 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:\Downloads\geckodriver.exe");
Tenga en cuenta que debe configurar las propiedades del controlador gecko antes de crear un ejemplo de un controlador Mozilla Firefox.
2. Excepción de Firefox independiente:
org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.
Esta excepción generalmente ocurre cuando la versión de Firefox se actualiza a la última versión. La intención de esta excepción es actualizar el archivo jar de selenium y el controlador gecko a la última versión y usar la misma.
3. Sesión no exceptuada:
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.
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 rechazo de enlace:
WebDriver Exception: Connection Refused
La excepción a esto es el mensaje generado cuando un controlador web no puede establecer una conexión con Firefox. Puede resolverse utilizando cualquiera de las siguientes técnicas.
- Utilice el método driver.quit () para eliminar instancias anteriores de un controlador web
- Borre la memoria caché del navegador antes de realizar sus pruebas automatizadas
- Espacio de trabajo claro del proyecto dentro de Eclipse IDE
- Utilice siempre la última versión del controlador selenium gecko y la última versión del navegador Firefox