160 votes

Comment exécuter des cas de test Selenium WebDriver dans Chrome

J'ai essayé ceci

WebDriver driver = new ChromeDriver();

Mais je reçois l'erreur suivante

Échec des tests : setUp(com.TEST) : Le chemin vers l'exécutable du pilote doit être défini par la propriété système webdriver.chrome.driver ; pour plus d'informations, voir code ici. La dernière version peut être téléchargée depuis ce lien

Comment puis-je faire tester Chrome les cas de test Selenium WebDriver ?

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.

6voto

Rakesh Chaudhari Points 1032

Vous pouvez utiliser le code ci-dessous pour exécuter des cas de test dans Chrome en utilisant Selenium WebDriver :

import java.io.IOException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class ChromeTest {

    /**
     * @param args
     * @throws InterruptedException
     * @throws IOException
     */
    public static void main(String[] args) throws InterruptedException, IOException {
        // Indique au système où trouver le pilote Chrome
        System.setProperty(
                "webdriver.chrome.driver",
                "E:/chromedriver_win32/chromedriver.exe");

        WebDriver webDriver = new ChromeDriver();

        // Ouvre google.com
        webDriver.navigate().to("http://www.google.com");

        String html = webDriver.getPageSource();

        // Affiche le résultat ici.
        System.out.println(html);

        webDriver.close();
        webDriver.quit();
    }
}

4voto

edouard Points 424

Trouvez la dernière version de chromedriver ici. Une fois téléchargé, décompressez-le à la racine de votre installation Python, par exemple, C:/Program Files/Python-3.5, et c'est tout.

Vous n'avez même pas besoin de spécifier le chemin nulle part et/ou d'ajouter chromedriver à votre chemin ou similaire. Je viens de le faire sur une installation propre de Python et ça marche.

4voto

Anuj Teotia Points 798

Téléchargez la dernière version du pilote Chrome et utilisez ce code :

System.setProperty("webdriver.chrome.driver", "chemin du chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
Thread.sleep(10000);
driver.get("http://stackoverflow.com");

1voto

user1587329 Points 91

Sous Ubuntu, vous pouvez simplement installer le paquet chromium-chromedriver :

apt install chromium-chromedriver

Sachez que cela installe également une version obsolète de Selenium. Pour installer la dernière version de Selenium :

pip install selenium

0voto

chuha.billi Points 94

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 :

Entrez la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X