example - Selenium con Java: la propiedad del sistema webdriver.gecko.driver debe establecer la ruta al ejecutable del controlador.
selenium webdriver java (4)
-
Descargue el controlador gecko del sitio web seleniumhq (ahora está en GitHub y puede descargarlo desde
https://github.com/mozilla/geckodriver/releases
).
- Tendrá un zip (o tar.gz), así que extráigalo.
- Después de la extracción, tendrá el archivo geckodriver.exe (ejecutable apropiado en Linux).
- Crear carpeta en C: llamado SeleniumGecko (o apropiado)
- Copie y pegue geckodriver.exe en SeleniumGecko
- Establecer la ruta para el controlador gecko como se muestra a continuación
.
System.setProperty("webdriver.gecko.driver","C://geckodriver-v0.10.0-win64//geckodriver.exe");
WebDriver driver = new FirefoxDriver();
Estoy tratando de iniciar Mozilla pero aún recibo este error:
Excepción en el subproceso "main" java.lang.IllegalStateException: la ruta al ejecutable del controlador debe establecerse mediante la propiedad del sistema webdriver.gecko.driver; Para obtener más información, consulte https://github.com/mozilla/geckodriver . La última versión se puede descargar desde https://github.com/mozilla/geckodriver/releases
Estoy usando la versión Beta de
Selenium 3.0.01
y
Mozilla 45
.
También he probado con
Mozilla 47
.
pero sigue siendo lo mismo.
Código Java Selenium WebDriver:
Descargue Gecko Driver desde https://github.com/mozilla/geckodriver/releases según su plataforma. Extraerlo en un lugar por su elección. Escribe el siguiente código:
System.setProperty("webdriver.gecko.driver", "D:/geckodriver-v0.16.1-win64/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.lynda.com/Selenium-tutorials/Mastering-Selenium-Testing-Tools/521207-2.html");
Cada servicio de controlador en selenium llama al código similar (el siguiente es el código específico de firefox) mientras crea el objeto del controlador
@Override
protected File findDefaultExecutable() {
return findExecutable(
"geckodriver", GECKO_DRIVER_EXE_PROPERTY,
"https://github.com/mozilla/geckodriver",
"https://github.com/mozilla/geckodriver/releases");
}
ahora para el controlador que desea usar, debe establecer la propiedad del sistema con el valor de ruta al ejecutable del controlador.
para firefox GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver" y esto se puede configurar antes de crear el objeto del controlador como se muestra a continuación
System.setProperty("webdriver.gecko.driver", "./libs/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
Los enlaces del cliente
Selenium
intentarán localizar el ejecutable
geckodriver
desde la
PATH
sistema.
Deberá agregar el directorio que contiene el ejecutable a la ruta del sistema.
-
En los sistemas Unix , puede hacer lo siguiente para agregarlo a la ruta de búsqueda de su sistema, si está utilizando un shell compatible con bash:
export PATH=$PATH:/path/to/geckodriver
-
En Windows , debe actualizar la variable del sistema Ruta para agregar la ruta completa del directorio al ejecutable. El principio es el mismo que en Unix.
Toda la configuración a continuación para lanzar el último Firefox usando cualquier enlace de lenguaje de programación es aplicable para
Selenium2
para habilitar Marionette explícitamente.
Con Selenium 3.0 y versiones posteriores, no debería necesitar hacer nada para usar Marionette, ya que está habilitado de forma predeterminada.
Para usar Marionette en sus pruebas, necesitará actualizar sus capacidades deseadas para usarlo.
Java :
Como excepción dice claramente que necesita descargar el último
geckodriver.exe
desde
https://github.com/mozilla/geckodriver/releases
y configurar la ruta descargada
geckodriver.exe
donde existe en su computadora como propiedad del sistema con
webdriver.gecko.driver
variable antes de iniciar el controlador de marionetas y lanzar Firefox como se muestra a continuación:
//if you didn''t update the Path system variable to add the full directory path to the executable as above mentioned then doing this directly through code
System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe");
//Now you can Initialize marionette driver to launch firefox
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
WebDriver driver = new MarionetteDriver(capabilities);
Y para
Selenium3
utilizar como: -
WebDriver driver = new FirefoxDriver();
Si todavía tiene problemas, también siga este enlace que lo ayudará a resolver su problema
.NET :
var driver = new FirefoxDriver(new FirefoxOptions());
Python :
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.FIREFOX
# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True
# Path to Firefox DevEdition or Nightly.
# Firefox 47 (stable) is currently not supported,
# and may give you a suboptimal experience.
#
# On Mac OS you must point to the binary executable
# inside the application package, such as
# /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin
caps["binary"] = "/usr/bin/firefox"
driver = webdriver.Firefox(capabilities=caps)
Rubí :
# Selenium 3 uses Marionette by default when firefox is specified
# Set Marionette in Selenium 2 by directly passing marionette: true
# You might need to specify an alternate path for the desired version of Firefox
Selenium::WebDriver::Firefox::Binary.path = "/path/to/firefox"
driver = Selenium::WebDriver.for :firefox, marionette: true
JavaScript (Node.js) :
const webdriver = require(''selenium-webdriver'');
const Capabilities = require(''selenium-webdriver/lib/capabilities'').Capabilities;
var capabilities = Capabilities.firefox();
// Tell the Node.js bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.set(''marionette'', true);
var driver = new webdriver.Builder().withCapabilities(capabilities).build();
Usando
RemoteWebDriver
Si desea usar
RemoteWebDriver
en cualquier idioma, esto le permitirá usar
Marionette
en
Selenium
Grid.
Python :
caps = DesiredCapabilities.FIREFOX
# Tell the Python bindings to use Marionette.
# This will not be necessary in the future,
# when Selenium will auto-detect what remote end
# it is talking to.
caps["marionette"] = True
driver = webdriver.Firefox(capabilities=caps)
Rubí :
# Selenium 3 uses Marionette by default when firefox is specified
# Set Marionette in Selenium 2 by using the Capabilities class
# You might need to specify an alternate path for the desired version of Firefox
caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true, firefox_binary: "/path/to/firefox"
driver = Selenium::WebDriver.for :remote, desired_capabilities: caps
Java :
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
// Tell the Java bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.setCapability("marionette", true);
WebDriver driver = new RemoteWebDriver(capabilities);
.RED
DesiredCapabilities capabilities = DesiredCapabilities.Firefox();
// Tell the .NET bindings to use Marionette.
// This will not be necessary in the future,
// when Selenium will auto-detect what remote end
// it is talking to.
capabilities.SetCapability("marionette", true);
var driver = new RemoteWebDriver(capabilities);
Nota: Al igual que los otros controladores disponibles para Selenium de otros proveedores de navegadores, Mozilla ha lanzado ahora un ejecutable que se ejecutará junto con el navegador. Siga this para más detalles.