web-dev-qa-db-fra.com

Selenium using Java - Le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système webdriver.gecko.driver.

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.

62
Reema

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();

Si vous avez toujours des problèmes, suivez également ce lien pour vous aider à 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 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.

Vous pouvez télécharger le dernier fichier exécutable geckodriver pour prendre en charge le dernier firefox à partir d’ici

89
Saurabh Gaur
  1. Téléchargez le pilote gecko depuis le site Web séleniumhq (il est maintenant sur GitHub et vous pouvez le télécharger depuis Ici ).
    1. Vous aurez un Zip (ou tar.gz) alors extrayez-le.
    2. Après l'extraction, vous aurez le fichier geckodriver.exe (l'exécutable approprié sous Linux).
    3. Créer un dossier en C: nommé SeleniumGecko (ou approprié)
    4. Copier et coller geckodriver.exe dans SeleniumGecko
    5. Définissez le chemin du pilote de gecko comme ci-dessous

.

System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.10.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
19
Kanth25

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");
2
Ripon Al Wasim

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();
0
chuha.billi