Come eseguire i casi di test Selenium WebDriver in Chrome?


160

Ci ho provato

WebDriver driver = new ChromeDriver();

Ma sto ricevendo l'errore come

Test non riusciti: setUp (com.TEST): il percorso dell'eseguibile del driver deve essere impostato dalla proprietà di sistema webdriver.chrome.driver; per ulteriori informazioni, consultare il codice qui . L'ultima versione può essere scaricata da Link

Come posso fare in Chrome per testare i casi di test Selenium-WebDriver?


Sarebbe utile se puoi sapere se hai scaricato il driver di selenio chrome da code.google.com/p/chromedriver/downloads/list e l' hai aggiunto alla libreria in eclipse sotto "Aggiungi vasetti esterni" prima di eseguire selenium-java codice.
Hemanth,

Risposte:


252

Devi scaricare il driver eseguibile da: ChromeDriver Download

Quindi tutto ciò che devi fare è usare quanto segue prima di creare l'oggetto driver (già mostrato nell'ordine corretto):

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

Questo è stato estratto dalla guida più utile dalla documentazione di ChromeDriver .


@aimbire: ehi sto affrontando lo stesso problema. Ho fatto la stessa cosa suggerita da te ma ho riscontrato questo errore. "java.lang.IllegalStateException: L'eseguibile del driver non esiste: D: \ selenimPRJarg1 \ chromedriver.exe" Mi manca qualcosa "?
kTiwari,

Devi scaricare Selenium Standalone Server da qui docs.seleniumhq.org/download e aggiungere il file jar come dipendenza al tuo progetto Java.
dikirill,

4
dove usi / scrivi questo? System.setProperty ("webdriver.chrome.driver", "/ path / to / chromedriver"); Driver WebDriver = nuovo ChromeDriver ();
Tijnn,

1
Ho esplorato ogni risposta a questa domanda e solo questa ha funzionato per me. (y)
puffles

Anche se questo è tecnicamente corretto, non dovresti davvero impostare quella variabile ambientale nel codice, è lo stesso che codificare un percorso nel tuo codice. La variabile ambientale deve essere impostata sulla macchina su cui si esegue il codice, consentendo a ciascuna macchina di archiviare il file eseguibile del driver Chrome in un posto unico ma che tutto funzioni ancora.
Ardesco,

21

Scarica la versione di aggiornamento del driver di Chrome dal driver di Chrome Leggere anche la Nota di rilascio qui Se Chrome Browser è aggiornato, è necessario scaricare il nuovo chormedriver dal link sopra perché sarebbe compatto con la nuova versione del browser.

 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
Questa è una soluzione ingombrante. Ti consiglierei di cambiarlo se è quello che usi oggi.
mirino

1
Il link per il download non è più aggiornato.
Codice finito

Questo codice non funziona in Google Chrome versione 69.0.3497.100 (build ufficiale) (64 bit). Per favore, fratello suggerisci un nuovo codice. Fino ad ora funzionava nella versione precedente alla versione 65.0.0
Mitesh Thakery,

18

È necessario scaricare ChromeDriver in una cartella e aggiungere questa cartella nella variabile PATH. Dovrai riavviare la console per farlo funzionare.


8

Se usi l'homebrew su un MacOS, puoi usare il comando:

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

Dovrebbe funzionare bene dopo senza altra configurazione.


2
ormai lo è brew tap homebrew/cask && brew cask install chromedriver.
luk2302,

6

Devi installare il driver Chrome. È possibile installare questo pacchetto usando il nugget come mostrato di seguito


1
Questo potrebbe essere quello ma la versione su NuGet è troppo vecchia: 2.10.0 del 13 ottobre 2014
Tiago Freitas Leal,

Di nuovo obsoleto il 23 marzo. Impossibile utilizzare sull'ultimo Chrome.
Willem,

6

È possibile utilizzare il codice seguente per eseguire casi di test in Chrome utilizzando il web driver 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

Trova l'ultima versione di chromedriver qui . Una volta scaricato, decomprimilo alla radice dell'installazione di Python, ad esempio C:/Program Files/Python-3.5, e il gioco è fatto. Non è nemmeno necessario specificare il percorso ovunque e / o aggiungere chromedriveral percorso o simili. L'ho appena fatto su un'installazione pulita di Python e funziona.


4
cattivo consiglio ... non inquinare l'installazione di Python
Corey Goldberg,

inoltre, l'OP non ha mai specificato Python
Corey Goldberg

4

Scarica l'ultima versione del driver Chrome e usa questo codice:

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

Su Ubuntu, puoi semplicemente installare il chromium-chromedriverpacchetto:

apt install chromium-chromedriver

Essere consapevoli del fatto che questo installa anche una versione obsoleta di selenio. Per installare l'ultimo selenio:

pip install selenium

0

Tutte le risposte sopra sono corrette, di seguito è la piccola immersione profonda nel problema e nella soluzione.

Il costruttore del driver in selenio, ad esempio

WebDriver driver = new ChromeDriver();

cerca l'eseguibile del driver, in questo caso il driver Chrome cerca l'eseguibile del driver Chrome, nel caso in cui il servizio non sia in grado di trovare l'eseguibile, viene generata l'eccezione

da qui proviene l'eccezione (notare il metodo check state)

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

Di seguito è riportato il metodo dello stato di controllo che genera l'eccezione

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

SOLUZIONE : impostare la proprietà di sistema prima di creare l'oggetto driver come segue

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

di seguito è riportato lo snippet di codice (per Chrome e Firefox) in cui il servizio driver cerca l'eseguibile del driver:

Cromo:

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

dove CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" e GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"

simile è il caso di altri browser, di seguito è riportato lo snapshot dell'elenco dell'implementazione del browser disponibile

inserisci qui la descrizione dell'immagine


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

Ho incluso il binario nella directory delle risorse dei miei progetti in questo modo:

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

Codice:

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

Scarica exe di chromedriver ed estrailo nella posizione corrente del progetto. Qui il link, dove possiamo scaricare l'ultima versione di chromedriver.

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

Qui il semplice codice per il browser di avvio e vai a url.

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

WebDriver driver = new ChromeDriver();

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

Scarica il chromedriver ed estrailo. quindi creare una cartella nel progetto e denominarla come chromedriver e conservare il file .exe in esso. e usa questo percorso. Questo è il semplice esempio di codice. 'code' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); Driver WebDriver = nuovo ChromeDriver (); driver.get (" google.co.in" ); Casella di ricerca WebElement = driver.findElement (By.name ("q")); searchbox.sendKeys ("migliori tutorial video di selenio gratuiti"); searchbox.submit ();
Vinay,

Per favore, considera di aggiornare questa risposta con le informazioni aggiuntive vinay commentate.
Ricardo Souza,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.