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


160

J'ai essayé ça

WebDriver driver = new ChromeDriver();

Mais j'obtiens l'erreur comme

Tests échoués: setUp (com.TEST): le chemin d'accès à l'exécutable du pilote doit être défini par la propriété système webdriver.chrome.driver; pour plus d'informations, consultez le code ici . La dernière version peut être téléchargée depuis Link

Comment puis-je faire en sorte que Chrome teste les cas de test Selenium-WebDriver?


Il serait utile que vous puissiez savoir si vous avez téléchargé le pilote selenium chrome à partir de code.google.com/p/chromedriver/downloads/list et l' avez ajouté à la bibliothèque dans eclipse sous "Add External Jars" avant d'exécuter votre selenium-java code.
Hemanth

Réponses:


252

Vous devez télécharger le pilote exécutable à partir de: ChromeDriver Download

Ensuite, tout ce que vous avez à faire est d'utiliser ce qui suit avant de créer l'objet pilote (déjà affiché dans le bon ordre):

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();

Ceci a été extrait du guide le plus utile de la documentation ChromeDriver .


@aimbire: hé je suis confronté au même problème. J'ai fait la même chose suggérée par vous, mais j'ai obtenu cette erreur. "java.lang.IllegalStateException: L'exécutable du pilote n'existe pas: D: \ selenimPRJarg1 \ chromedriver.exe" Suis-je absent de quelque chose "?
kTiwari

Vous devez télécharger Selenium Standalone Server à partir d'ici docs.seleniumhq.org/download , et ajouter le fichier jar en tant que dépendance à votre projet Java.
dikirill

4
où utilisez-vous / tapez-vous ceci? System.setProperty ("webdriver.chrome.driver", "/ chemin / vers / chromedriver"); Pilote WebDriver = nouveau ChromeDriver ();
tijnn

1
J'ai exploré toutes les réponses à cette question et seule celle-ci a fonctionné pour moi. (y)
puffles

Bien que cela soit techniquement correct, vous ne devriez vraiment pas définir cette variable d'environnement dans le code, c'est la même chose que de coder en dur un chemin dans votre code. La variable d'environnement doit être définie sur la machine sur laquelle vous exécutez le code, ce qui permet à chaque machine de stocker l'exécutable du pilote Chrome dans un emplacement unique mais que tout fonctionne toujours.
Ardesco

21

Télécharger la version de mise à jour du pilote Chrome à partir du pilote Chrome Veuillez également lire la note de publication ici Si le navigateur Chrome est mis à jour, vous devez télécharger le nouveau chormedriver à partir du lien ci-dessus, car il serait compact avec la nouvelle version du navigateur.

 public class chrome 
 {

  public static void main(String[] args) {

       System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
       WebDriver driver = new ChromeDriver();


    driver.get("http://www.google.com");

  }

 }

3
Maintenant, c'est une solution lourde. Je vous conseillerais de changer cela si c'est ce que vous utilisez de nos jours.
aimbire

1
Le lien de téléchargement est désormais obsolète.
Fini le codage le

Ce code ne fonctionne pas dans la version 69.0.3497.100 de Google Chrome (version officielle) (64 bits). Veuillez bro suggérer un nouveau code. Jusqu'à présent, il fonctionnait dans une version plus ancienne inférieure à la version 65.0.0
Mitesh Thakery

18

Vous devez télécharger le chromeDriver dans un dossier et ajouter ce dossier dans votre variable PATH. Vous devrez redémarrer votre console pour que cela fonctionne.


8

Si vous utilisez homebrew sur un MacOS, vous pouvez utiliser la commande:

(MODIFIER) :brew tap homebrew/cask && brew cask install chromedriver

Cela devrait fonctionner correctement après cela sans autre configuration.


2
maintenant c'est le cas brew tap homebrew/cask && brew cask install chromedriver.
luk2302

6

Vous devez installer le pilote Chrome. Vous pouvez installer ce package en utilisant nugget comme indiqué ci-dessous


1
Cela pourrait être celui-là mais la version sur NuGet est trop ancienne: 2.10.0 datée du 13 octobre 2014
Tiago Freitas Leal

De nouveau obsolète le 23 mars. Impossible d'utiliser sur le dernier Chrome.
willem

6

Vous pouvez utiliser le code ci-dessous pour exécuter des cas de test dans Chrome à l'aide du pilote Web Selenium:

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 {
        // Telling the system where to find the Chrome driver
        System.setProperty(
                "webdriver.chrome.driver",
                "E:/chromedriver_win32/chromedriver.exe");

        WebDriver webDriver = new ChromeDriver();

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

        String html = webDriver.getPageSource();

        // Printing result here.
        System.out.println(html);

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

5

Trouvez la dernière version d' 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 n'importe où et / ou de l'ajouter chromedriverà votre chemin ou autre. Je viens de le faire sur une installation Python propre et cela fonctionne.


4
mauvais conseil ... ne polluez pas votre installation python
Corey Goldberg

aussi, l'OP n'a jamais spécifié Python
Corey Goldberg

4

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

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

1

Sur Ubuntu, vous pouvez simplement installer le chromium-chromedriverpackage:

apt install chromium-chromedriver

Sachez que cela installe également une version de sélénium obsolète. Pour installer le dernier sélénium:

pip install selenium

0

Toutes les réponses ci-dessus sont correctes, voici la petite plongée profonde dans le problème et la solution.

Le constructeur du driver en sélénium par exemple

WebDriver driver = new ChromeDriver();

recherche l'exécutable du pilote, dans ce cas le pilote chrome recherche l'exécutable du pilote chrome, au cas où le service ne trouverait pas l'exécutable, l'exception est levée

c'est de là que vient l'exception (notez la méthode de vérification de l'état)

 /**
   *
   * @param exeName Name of the executable file to look for in PATH
   * @param exeProperty Name of a system property that specifies the path to the executable file
   * @param exeDocs The link to the driver documentation page
   * @param exeDownload The link to the driver download page
   *
   * @return The driver executable as a {@link File} object
   * @throws IllegalStateException If the executable not found or cannot be executed
   */
  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,
        "The path to the driver executable must be set by the %s system property;"
            + " for more information, see %s. "
            + "The latest version can be downloaded from %s",
            exeProperty, exeDocs, exeDownload);

    File exe = new File(exePath);
    checkExecutable(exe);
    return exe;
  }

Voici la méthode de vérification de l'état qui lève l'exception

  /**
   * Ensures the truth of an expression involving the state of the calling instance, but not
   * involving any parameters to the calling method.
   *
   * <p>See {@link #checkState(boolean, String, Object...)} for details.
   */
  public static void checkState(
      boolean b,
      @Nullable String errorMessageTemplate,
      @Nullable Object p1,
      @Nullable Object p2,
      @Nullable Object p3) {
    if (!b) {
      throw new IllegalStateException(format(errorMessageTemplate, p1, p2, p3));
    }
  }

SOLUTION : définissez la propriété système avant de créer l'objet pilote comme suit

System.setProperty("webdriver.gecko.driver", "path/to/chromedriver.exe");
WebDriver driver = new ChromeDriver();

Voici l'extrait de code (pour chrome et firefox) où le service de pilote recherche 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");
    }

Renard de feu:

@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"

similaire est le cas pour les autres navigateurs, voici un aperçu de la liste des implémentations de navigateur disponibles

entrez la description de l'image ici


0
To run Selenium WebDriver test cases in Chrome, follow these steps:


first of all set the property & chrome driver path

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
then initialize the Chrome Driver's object

WebDriver driver = new ChromeDriver();
then pass the url into get method of WebDriver

driver.get("http://www.google.com");

0

J'ai inclus le binaire dans le répertoire des ressources de mes projets comme ceci:

src\main\resources\chrome\chromedriver_win32.zip
src\main\resources\chrome\chromedriver_mac64.zip
src\main\resources\chrome\chromedriver_linux64.zip

Code:

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.SystemUtils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.*;
import java.nio.file.Files;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public WebDriver getWebDriver() throws IOException {
    File tempDir = Files.createTempDirectory("chromedriver").toFile();
    tempDir.deleteOnExit();
    File chromeDriverExecutable;

    final String zipResource;
    if (SystemUtils.IS_OS_WINDOWS) {
        zipResource = "chromedriver_win32.zip";
    } else if (SystemUtils.IS_OS_LINUX) {
        zipResource = "chromedriver_linux64.zip";
    } else if (SystemUtils.IS_OS_MAC) {
        zipResource = "chrome/chromedriver_mac64.zip";
    } else {
        throw new RuntimeException("Unsuppoerted OS");
    }

    try (InputStream is = getClass().getResourceAsStream("/chrome/" + zipResource)) {
        try (ZipInputStream zis = new ZipInputStream(is)) {
            ZipEntry entry;
            entry = zis.getNextEntry();
            chromeDriverExecutable = new File(tempDir, entry.getName());
            chromeDriverExecutable.deleteOnExit();
            try (OutputStream out = new FileOutputStream(chromeDriverExecutable)) {
                IOUtils.copy(zis, out);
            }
        }
    }

    System.setProperty("webdriver.chrome.driver", chromeDriverExecutable.getAbsolutePath());
    return new ChromeDriver();
}

-2

Téléchargez l'exe de chromedriver et extrayez-le à l'emplacement actuel du projet. Voici le lien, où nous pouvons télécharger la dernière version de chromedriver.

https://sites.google.com/a/chromium.org/chromedriver/

Voici le code simple pour le navigateur de lancement et accédez à l'url.

System.setProperty("webdriver.chrome.driver", "path of chromedriver.exe");

WebDriver driver = new ChromeDriver();

driver.get("https://any_url.com");

Téléchargez le chromedriver et extrayez-le. créez ensuite un dossier dans votre projet et nommez-le chromedriver et conservez-y le fichier .exe. et utilisez ce chemin. Ceci est l'exemple de code simple. 'code' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); Pilote WebDriver = nouveau ChromeDriver (); driver.get (" google.co.in" ); WebElement searchbox = driver.findElement (Par.nom ("q")); searchbox.sendKeys ("meilleurs tutoriels vidéo sur le sélénium gratuits"); searchbox.submit ();
vinay

S'il vous plaît, pensez à mettre à jour cette réponse avec les informations supplémentaires que Vinay a commentées.
Ricardo Souza
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.