Descargar Geckodriver para Firefox & Selenium

¿En qué consiste GeckoDriver? Selenium?

El término Gecko significa un motor de navegador web integrado en Mozilla. Firefox Navegador. El controlador Gecko actúa como un proxy entre los clientes habilitados para Web Driver (Eclipse, Netbeans, etc.) y Mozilla Firefox Navegador. En resumen, el controlador Gecko actúa como un vínculo entre Selenium Pruebas de controladores web y Mozilla Firefox navegador.

Antes Selenium 3, Mozilla Firefox El navegador era el navegador predeterminado para Selenium. Después Selenium 3. Los evaluadores deben inicializar el script para usarlo. Firefox usando GeckoDriver explícitamente. Selenium utiliza el protocolo W3C Webdriver para enviar solicitudes a GeckoDriver, que las traduce a un protocolo llamado Marioneta. Firefox comprenderá las órdenes transmitidas en forma de Mariprotocolo onette y los ejecuta.

GeckoDriver en Selenium

Cómo descargar e instalar GeckoDriver en Selenium

El controlador Gecko está disponible como archivo ejecutable que se puede descargar en el sistema. A continuación, se muestra la lista de pasos para descargar el controlador Gecko.

Paso 1 ) Seleccione la versión adecuada.
En esta pagina https://github.com/mozilla/geckodriver/releases ,Seleccione la versión apropiada para descargar GeckoDriver según su sistema operativo

Descargue e instale GeckoDriver en Selenium

Paso 2) Extraiga el archivo ZIP.
Una vez que se complete la descarga del archivo ZIP, extraiga el contenido del archivo ZIP en una carpeta de archivos

Descargue e instale GeckoDriver en Selenium

Paso 3) Tenga en cuenta la ubicación.
Anote la ubicación donde extrajo el controlador. La ubicación se utilizará más adelante para crear una instancia del controlador.

Descargue e instale GeckoDriver en Selenium

Formas de inicializar GeckoDriver

Hay tres formas diferentes de inicializar GeckoDriver.

1. Uso de capacidades deseadas

Primero, configure la propiedad 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 deseadas.

Ayuda para las capacidades deseadas Selenium 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.

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. Usar la propiedad de marioneta

El controlador Gecko también se puede inicializar usando la propiedad marioneta como se muestra a continuación

System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");

Si el controlador gecko se inicializa usando el método anterior, el código para las capacidades deseadas es No requerida.

3. Usando Firefox

Mozilla Firefox La versión 47+ tiene un controlador de marionetas como sistema heredado. Aprovechando esto, se puede llamar al controlador de marionetas usando Firefox Opciones 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("https://demo.guru99.com/selenium/guru99home/");
    }

    @After
    public void endTest() {
        driver.quit();
    }

}

Explicación del código

@antes del método

Inicialmente, debemos configurar la propiedad del sistema para el controlador gecko en la ubicación de descarga del archivo geckdriver.exe. Necesitamos establecer la propiedad marioneta en verdadero para Selenium que se utilizará MariProtocolo onette para comunicarse con Gecko Driver. Finalmente, debemos comenzar el Firefox instancia del navegador que utiliza el objeto para las capacidades deseadas.

Las siguientes declaraciones ayudan a lograr 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 la URL especificada por el usuario utilizando el método "obtener" incorporado proporcionado por Selenium controlador web. La siguiente declaración ayuda a lograr lo mismo.

driver.get("https://demo.guru99.com/selenium/guru99home/");

@Después del método

Finalmente, cerramos la instancia del navegador usando el método quit.

driver.quit();

Modificar un script para no Gecko a Gecko

Script de controlador que no es gecko usado antes Selenium 3 fue sencillo. Necesitamos crear una instancia de Firefox controlador y utilizar la variable de instancia.

@Before
public void startBrowser() {
    driver = new FirefoxDriver();

}

Para convertir a gecko, simplemente 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 produjeron excepciones comunes al utilizar Gecko Driver

A continuación se muestra una lista de excepciones comunes que ocurren al usar Gecko Driver y con la resolución.

Esta excepción ocurre cuando el usuario intenta crear una instancia. Firefox controlador sin configurar la propiedad del sistema para el controlador gecko. Esto lo suelen hacer los principiantes para Selenium que no están al tanto de los cambios realizados desde Selenium 3 hasta Selenium Versión anterior.

La solució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:\\Downloads\\geckodriver.exe");

Tenga en cuenta que debe configurar la propiedad del controlador gecko antes de crear una instancia de Mozilla. Firefox conductor.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.

Esta excepción suele ocurrir cuando Firefox La versión se ha actualizado a la última versión. La solución para esta excepción es actualizar el archivo jar de selenio y el controlador gecko a la última versión y utilizar los mismos.

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.

Esta excepción se produce debido a problemas de compatibilidad entre Selenium y conductor Gecko. El controlador Gecko funciona con Firefox versión 47 o superior. Se puede solucionar actualizando Firefox versión a 47 o superior.

WebDriver Exception: Connection Refused

Esta excepción es el mensaje generado cuando el controlador web no puede establecer una conexión con FirefoxSe puede resolver utilizando cualquiera de las siguientes técnicas.

  • Utilice driver.quit() método 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 Eclipse IDE
  • Utilice siempre la última versión del controlador Selenium gecko y la versión más reciente de Firefox cada navegador

Ventaja de usar Gecko Driver

Selenium Webdriver versión 2.53 no es compatible con Mozilla Firefox versión 47.0+. El Firefox controlador utilizado en versiones anteriores de Mozilla Firefox se suspenderá y solo se utilizará la implementación GeckoDriver. Por lo tanto, los evaluadores se ven obligados a utilizar GeckoDriver si quieren ejecutar pruebas automatizadas en Mozilla. Firefox versión 47.0+. Pero la gran pregunta: ¿cuál es la ventaja?

La principal ventaja de utilizar GeckoDriver frente al predeterminado Firefox conductor es Compatibilidad. Usos de GeckoDriver Protocolo W3C WebDriver para comunicarse con Selenium. W3C es un estándar universalmente definido para Web Driver. Esto significa Selenium Desarrolladores (personas que codifican Selenium base) no necesita crear una nueva versión de Web Driver para cada versión del navegador. Se puede utilizar el mismo controlador web para varias versiones de navegador. Por lo tanto, se prefiere GeckoDriver en comparación con la implementación anterior de Firefox conductor.