El Selenium
Les liaisons du client essaieront de localiser le geckodriver
exécutable du système PATH
. Vous devrez ajouter le répertoire contenant l'exécutable au chemin du système.
-
Sur Unix vous pouvez faire ce qui suit pour l'ajouter au chemin de recherche de votre système, si vous utilisez un shell compatible avec bash :
export PATH=$PATH:/path/to/geckodriver
-
Sur Windows vous devez mettre à jour la variable système Path pour ajouter le chemin complet du répertoire de l'exécutable. Le principe est le même que sous Unix.
Toute la configuration ci-dessous pour lancer le dernier firefox en utilisant n'importe quel langage de programmation est applicable pour Selenium2
pour activer explicitement Marionette. Avec Selenium 3.0 et les versions ultérieures, vous ne devriez pas avoir à faire quoi que ce soit pour utiliser Marionette, car elle est activée par défaut.
Pour utiliser Marionette dans vos tests, vous devrez mettre à jour vos capacités souhaitées pour l'utiliser.
Java :
Comme l'exception dit clairement que vous devez télécharger le dernier geckodriver.exe
de aquí et mettre en place le téléchargement geckodriver.exe
le chemin où il existe dans votre ordinateur comme propriété du système avec avec la variable webdriver.gecko.driver
avant d'initier le pilote de 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();
Si vous êtes toujours en difficulté, suivez ce lien qui vous aidera à résoudre votre problème.
.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
en Selenium
Grille.
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);
Note : Tout comme les autres pilotes disponibles pour Selenium auprès des autres fournisseurs de navigateurs, Mozilla a maintenant publié un exécutable qui s'exécutera en même temps que le navigateur. Suivez este pour plus de détails.
Vous pouvez télécharger le dernier exécutable de geckodriver pour supporter le dernier firefox à partir d'ici.
1 votes
Je pense que ce n'est pas un problème de duplication, il se produit avec
selenium 3
et c'est un nouveau problème, la stacktrace est aussi différente. Merci :)1 votes
Vous avez besoin de geckodriver pour lancer les tests Selenium 3 dans Firefox.