Toutes les réponses précédentes sont correctes. Voici une plongée un peu plus en profondeur dans le problème et la solution.
Le constructeur du pilote dans Selenium par exemple
WebDriver driver = new ChromeDriver();
cherche l'exécutable du pilote, dans ce cas le pilote Google Chrome cherche un exécutable de pilote Chrome. Si le service ne parvient pas à trouver l'exécutable, une exception est levée.
C'est ici que l'exception provient (notez la méthode check state)
/**
*
* @param exeName Nom du fichier exécutable à rechercher dans le chemin d'accès
* @param exeProperty Nom d'une propriété système qui spécifie le chemin d'accès du fichier exécutable
* @param exeDocs Le lien vers la page de documentation du pilote
* @param exeDownload Le lien vers la page de téléchargement du pilote
*
* @return L'exécutable du pilote sous forme d'un objet {@link File}
* @throws IllegalStateException Si l'exécutable n'est pas trouvé ou ne peut pas être exécuté
*/
protected static File findExecutable(
String exeName,
String exeProperty,
String exeDocs,
String exeDownload) {
String defaultPath = new ExecutableFinder().find(exeName);
String exePath = System.getProperty(exeProperty, defaultPath);
checkState(exePath != null,
"Le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système %s;"
+ " pour plus d'informations, voir %s. "
+ "La dernière version peut être téléchargée depuis %s",
exeProperty, exeDocs, exeDownload);
File exe = new File(exePath);
checkExecutable(exe);
return exe;
}
Voici la méthode check state qui lance l'exception :
/**
* Assure la véracité d'une expression impliquant l'état de l'instance appelante, mais sans
* impliquer aucun paramètre de la méthode appelante.
*
*
SOLUTION: définir la propriété système avant de créer l'objet pilote comme suit.
System.setProperty("webdriver.gecko.driver", "chemin/vers/chromedriver.exe");
WebDriver driver = new ChromeDriver();
Voici un extrait de code (pour Chrome et Firefox) où le service pilote cherche l'exécutable du pilote :
Chrome:
@Override
protected File findDefaultExecutable() {
return findExecutable("chromedriver", CHROME_DRIVER_EXE_PROPERTY,
"https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver",
"http://chromedriver.storage.googleapis.com/index.html");
}
Firefox:
@Override
protected File findDefaultExecutable() {
return findExecutable(
"geckodriver", GECKO_DRIVER_EXE_PROPERTY,
"https://github.com/mozilla/geckodriver",
"https://github.com/mozilla/geckodriver/releases");
}
où CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" et GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"
Il en va de même pour les autres navigateurs, et voici un aperçu de la liste des implémentations de navigateurs disponibles :
0 votes
Ce serait utile si vous pouvez indiquer si vous avez téléchargé le pilote chrome de selenium à partir de code.google.com/p/chromedriver/downloads/list et l'avez ajouté à la bibliothèque dans Eclipse sous "Ajouter des Jar externes" avant d'exécuter votre code selenium-java.