Wie führe ich Selenium WebDriver-Testfälle in Chrome aus?


160

Ich habe es versucht

WebDriver driver = new ChromeDriver();

Aber ich bekomme den Fehler als

Fehlgeschlagene Tests: setUp (com.TEST): Der Pfad zur ausführbaren Treiberdatei muss von der Systemeigenschaft webdriver.chrome.driver festgelegt werden. Weitere Informationen finden Sie im Code hier . Die neueste Version kann von Link heruntergeladen werden

Wie kann ich Chrome dazu bringen, die Selenium-WebDriver-Testfälle zu testen?


Es ist hilfreich, wenn Sie feststellen können, ob Sie den Selenium-Chrome-Treiber von code.google.com/p/chromedriver/downloads/list heruntergeladen und in Eclipse unter "Externe Jars hinzufügen" zur Bibliothek hinzugefügt haben, bevor Sie Selenium-Java ausführen Code.
Hemanth

Antworten:


252

Sie müssen den ausführbaren Treiber herunterladen von: ChromeDriver Download

Anschließend müssen Sie vor dem Erstellen des Treiberobjekts (das bereits in der richtigen Reihenfolge angezeigt wird) Folgendes verwenden:

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

Dies wurde aus dem nützlichsten Handbuch aus der ChromeDriver-Dokumentation extrahiert .


@aimbire: Hey, ich stehe vor dem gleichen Problem. Ich habe das Gleiche von Ihnen vorgeschlagen, aber diesen Fehler erhalten. "java.lang.IllegalStateException: Die ausführbare Treiberdatei existiert nicht: D: \ selenimPRJarg1 \ chromedriver.exe" Vermisse ich etwas? "
kTiwari

Sie müssen Selenium Standalone Server von hier docs.seleniumhq.org/download herunterladen und die JAR-Datei als Abhängigkeit zu Ihrem Java-Projekt hinzufügen.
Dikirill

4
wo benutzt / tippst du das? System.setProperty ("webdriver.chrome.driver", "/ path / to / chromedriver"); WebDriver-Treiber = neuer ChromeDriver ();
tijnn

1
Ich habe jede Antwort auf diese Frage untersucht und nur diese hat für mich funktioniert. (y)
Puffles

Dies ist zwar technisch korrekt, Sie sollten diese Umgebungsvariable jedoch nicht im Code festlegen. Dies entspricht der harten Codierung eines Pfads in Ihrem Code. Die Umgebungsvariable sollte auf dem Computer festgelegt werden, auf dem Sie den Code ausführen, damit jeder Computer die ausführbare Chrome-Treibertabelle an einem eindeutigen Ort speichern kann, aber alles noch funktioniert.
Ardesco

21

Herunterladen der Update-Version des Chrome-Treibers vom Chrome-Treiber Bitte lesen Sie auch den Versionshinweis hier Wenn der Chrome-Browser aktualisiert wird, müssen Sie den neuen Chormedriver über den obigen Link herunterladen, da er mit der neuen Browser-Version kompakt ist.

 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
Das ist eine umständliche Lösung. Ich würde Ihnen raten, dies zu ändern, wenn Sie es heutzutage verwenden.
Aimbire

1
Der Download-Link ist jetzt veraltet.
Codierung verloren

Dieser Code funktioniert nicht in Google Chrome Version 69.0.3497.100 (Official Build) (64-Bit). Bitte schlagen Sie einen neuen Code vor. Bis jetzt funktionierte es in einer älteren Version unter 65.0.0
Mitesh Thakery

18

Sie sollten den chromeDriver in einen Ordner herunterladen und diesen Ordner in Ihre PATH-Variable einfügen. Sie müssen Ihre Konsole neu starten, damit sie funktioniert.


8

Wenn Sie Homebrew unter MacOS verwenden, können Sie den folgenden Befehl verwenden:

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

Danach sollte es ohne andere Konfiguration einwandfrei funktionieren.


2
Inzwischen ist es so brew tap homebrew/cask && brew cask install chromedriver.
luk2302

6

Sie müssen den Chrome-Treiber installieren. Sie können dieses Paket mit nugget wie unten gezeigt installieren


1
Dies könnte die sein, aber die Version auf NuGet ist zu alt: 2.10.0 vom 13. Oktober 2014
Tiago Freitas Leal

Am 23. März wieder veraltet. Kann auf dem neuesten Chrome nicht verwendet werden.
Willem

6

Mit dem folgenden Code können Sie Testfälle in Chrome mit dem Selenium-Webtreiber ausführen:

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

Hier finden Sie die neueste Version von chromedriver hier . Entpacken Sie es nach dem Herunterladen im Stammverzeichnis Ihrer Python-Installation, z C:/Program Files/Python-3.5. Sie müssen den Pfad nicht einmal irgendwo angeben und / oder chromedriverIhrem Pfad oder dergleichen hinzufügen . Ich habe es gerade bei einer sauberen Python-Installation gemacht und das funktioniert.


4
schlechter Rat ... verschmutzen Sie nicht Ihre Python-Installation
Corey Goldberg

Außerdem hat das OP Python
Corey Goldberg

4

Laden Sie die neueste Version des Chrome-Treibers herunter und verwenden Sie diesen 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

Unter Ubuntu können Sie das chromium-chromedriverPaket einfach installieren :

apt install chromium-chromedriver

Beachten Sie, dass hierdurch auch eine veraltete Selenversion installiert wird. So installieren Sie das neueste Selen:

pip install selenium

0

Alle obigen Antworten sind richtig. Es folgt ein kleiner Einblick in das Problem und die Lösung.

Der Treiberkonstruktor in Selen zum Beispiel

WebDriver driver = new ChromeDriver();

sucht nach der ausführbaren Treiberdatei, in diesem Fall sucht der Chrome-Treiber nach der ausführbaren Chrome-Treiberdatei, falls der Dienst die ausführbare Datei nicht finden kann, wird die Ausnahme ausgelöst

Hier kommt die Ausnahme her (beachten Sie die Prüfstatusmethode).

 /**
   *
   * @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;
  }

Es folgt die Prüfstatusmethode, die die Ausnahme auslöst

  /**
   * 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));
    }
  }

LÖSUNG : Legen Sie die Systemeigenschaft vor dem Erstellen des Treiberobjekts wie folgt fest

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

Im Folgenden finden Sie das Code-Snippet (für Chrome und Firefox), in dem der Treiberdienst nach der ausführbaren Treiberdatei sucht:

Chrom:

   @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");
    }

Feuerfuchs:

@Override
 protected File findDefaultExecutable() {
      return findExecutable(
        "geckodriver", GECKO_DRIVER_EXE_PROPERTY,
        "https://github.com/mozilla/geckodriver",
        "https://github.com/mozilla/geckodriver/releases");
    }

Dabei sind CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" und GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver".

Ähnliches gilt für andere Browser. Es folgt die Momentaufnahme der Liste der verfügbaren Browserimplementierungen

Geben Sie hier die Bildbeschreibung ein


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

Ich habe die Binärdatei wie folgt in die Ressourcenverzeichnisse meines Projekts aufgenommen:

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

Laden Sie die exe von chromedriver herunter und extrahieren Sie sie am aktuellen Projektstandort. Hier der Link, über den wir die neueste Version von chromedriver herunterladen können.

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

Hier der einfache Code für den Startbrowser und navigiere zur URL.

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

WebDriver driver = new ChromeDriver();

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

Laden Sie den Chromedriver herunter und extrahieren Sie ihn. Erstellen Sie als Nächstes einen Ordner in Ihrem Projekt, benennen Sie ihn als chromedriver und behalten Sie die EXE-Datei darin. und benutze diesen Pfad. Dies ist das einfache Codebeispiel. 'code' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); WebDriver-Treiber = neuer ChromeDriver (); driver.get (" google.co.in" ); WebElement searchbox = driver.findElement (By.name ("q")); searchbox.sendKeys ("beste kostenlose Selen-Video-Tutorials"); searchbox.submit ();
Vinay

Bitte erwägen Sie, diese Antwort mit den zusätzlichen Informationen zu aktualisieren, die vinay kommentiert hat.
Ricardo Souza
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.