J'essaie de lancer Mozilla mais j'obtiens toujours l'erreur suivante:
Exception dans le thread "principal" Java.lang.IllegalStateException: le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système webdriver.gecko.driver; pour plus d'informations, voir https://github.com/mozilla/geckodriver . La dernière version peut être téléchargée depuis https://github.com/mozilla/geckodriver/releases
J'utilise Selenium 3.0.01
Version bêta et Mozilla 45
. J'ai essayé avec Mozilla 47
aussi. mais toujours la même chose.
Les liaisons client Selenium
essaieront de localiser l'exécutable geckodriver
à partir du système PATH
. Vous devrez ajouter le répertoire contenant l'exécutable au chemin du système.
Sous Unix , vous pouvez procéder comme suit pour l’ajouter au chemin de recherche de votre système, si vous utilisez un shell compatible bash:
export PATH=$PATH:/path/to/geckodriver
Sous Windows , vous devez mettre à jour la variable système Path pour ajouter le chemin du répertoire complet à l'exécutable. Le principe est le même que sous Unix.
Toutes les configurations ci-dessous permettant de lancer le dernier firefox à l'aide de toute liaison de langage de programmation sont applicables pour Selenium2
afin d'activer explicitement Marionette. Avec Selenium 3.0 et les versions ultérieures, vous n’avez besoin de rien faire pour utiliser Marionette, car elle est activée par défaut.
Pour utiliser Marionette dans vos tests, vous devez mettre à jour les fonctionnalités souhaitées pour pouvoir l'utiliser.
Java :
Comme une exception indique clairement que vous devez télécharger le dernier geckodriver.exe
à partir de ici et définir le fichier téléchargé geckodriver.exe
où il existe dans votre ordinateur en tant que propriété système avec la variable webdriver.gecko.driver
avant d’initier le pilote de la marionnette et de lancer Firefox comme ci-dessous: -
//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);
Et pour Selenium3
utiliser comme: -
WebDriver driver = new FirefoxDriver();
. 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)
Ruby :
# 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();
Utilisation de RemoteWebDriver
Si vous voulez utiliser RemoteWebDriver
dans n’importe quelle langue, cela vous permettra d’utiliser Marionette
dans 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)
Ruby :
# 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);
. NET
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);
Remarque: Tout comme les autres pilotes disponibles pour Selenium proposés par d'autres éditeurs de navigateurs, Mozilla a publié un fichier exécutable qui s'exécutera parallèlement au navigateur. Suivez this pour plus de détails.
.
System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.10.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
Selenium WebDriver Java code:
Téléchargez le pilote Gecko depuis https://github.com/mozilla/geckodriver/releases en fonction de votre plate-forme. Extrayez-le dans un endroit de votre choix. Écrivez le code suivant:
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");
Chaque service Pilote dans Selenium appelle le code similaire (le code spécifique à Firefox est le suivant) lors de la création de l’objet Pilote.
@Override
protected File findDefaultExecutable() {
return findExecutable(
"geckodriver", GECKO_DRIVER_EXE_PROPERTY,
"https://github.com/mozilla/geckodriver",
"https://github.com/mozilla/geckodriver/releases");
}
maintenant, pour le pilote que vous souhaitez utiliser, vous devez définir la propriété système avec la valeur chemin d'accès à l'exécutable du pilote.
pour firefox GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver" et peut être défini avant la création de l’objet pilote comme ci-dessous
System.setProperty("webdriver.gecko.driver", "./libs/geckodriver.exe");
WebDriver driver = new FirefoxDriver();