c# - solve - ¿Por qué Firefox requiere GeckoDriver?
solve captcha python (4)
Déjame intentar responder a tus preguntas una por una:
-
¿Por qué Firefox requiere GeckoDriver? - Para Mozila Firefox hasta la versión 47.x era el navegador heredado y no necesitábamos el controlador gecko. Mozila Firefox desde la versión 47.x en adelante viene con Marionette, que es un controlador de automatización para el motor Gecko de Mozilla. Puede controlar de forma remota la interfaz de usuario o el JavaScript interno de una plataforma Gecko, como Firefox.
-
Con Chrome e IE funciona de fábrica : idealmente, ni Chrome ni IE deberían haber funcionado. Pero como ha agregado la ubicación de los archivos binarios en las Variables de entorno a sabiendas / sin saberlo durante la instalación / configuración de Google Chrome y MS Internet Explorer u otros softwares dependientes, esos archivos binarios se localizan y utilizan fácilmente de forma automática.
-
¿Por qué solo para Firefox tenemos que descargar / configurar este controlador? - No solo es Firefox, sino también para que Google Chrome y MS Internet Explorer funcionen con Selenium 3.4.0, necesita descargar obligatoriamente el controlador gecko v0.16.0 (o superior) desde https://github.com/mozilla/geckodriver/releases o el controlador Chrome o IEDriverServer y guardarlo en su máquina. Actualice su Mozila Firefox o Google Chrome o MS Internet Explorer a la última versión estable. Use la ruta absoluta de geckodriver / chromedriver / iedriver en su código mientras
System.setProperty
siguiente manera:System.setProperty("webdriver.gecko.driver", "C://Utility//BrowserDrivers//geckodriver.exe");
Avíseme si esto responde a su pregunta.
Solo una simple pregunta que tuve hoy:
Creé un nuevo proyecto de selenio con este código:
FirefoxDriver driver = new FirefoxDriver();
//ChromeDriver driver = new ChromeDriver();
//InternetExplorerDriver driver = new InternetExplorerDriver();
Con Chrome e IE funciona de fábrica, pero con Firefox lanza:
El archivo geckodriver.exe no existe en el directorio actual o en un directorio en la variable de entorno PATH. El controlador se puede descargar en https://github.com/mozilla/geckodriver/releases .
¿Por qué solo para Firefox tenemos que descargar / configurar este controlador?
Firefox está basado en Mozilla y el selenio necesita el controlador para interactuar con los controladores basados en gecko - vea el archivo README en geckodriver
Marionette como controlador de automatización en Firefox admite un protocolo de socket personalizado, que no es compatible con la especificación WebDriver. Como tal, debe usarse geckodriver, que actúa como un proxy entre Selenium y Firefox. Implementado como un pequeño servidor HTTP, acepta comandos que se ajustan a la especificación WebDriver y los reenvía a Marionette. Lo mismo se aplica a las respuestas de Marionette que se están transformando nuevamente en una respuesta HTTP compatible con WebDriver.
Con la próxima integración de Quantum (componentes Rust) en Firefox, geckodriver no será necesario en el futuro porque se integrará de forma predeterminada.
Su afirmación es realmente incorrecta, Chromeedriver también debe ponerse en camino. Creo que ha configurado el controlador cromado antes, por lo que parece funcionar de la caja.
La ruta para geckodriver / chromedriver también se puede establecer dentro de su código
La razón por la que necesitamos esto, AFAIK ya que firefox> 47, el plugin firefox webdriver no se incluye con el navegador, por lo que debe ejecutarse desde geckodriver y selenium 3+