Bagaimana menjalankan selenium WebDriver test case di Chrome?

160

Saya mencoba ini

WebDriver driver = new ChromeDriver();

Tapi saya mendapatkan error sebagai

Tes yang gagal: setUp (com.TEST): Jalur ke driver yang dapat dieksekusi harus ditetapkan oleh properti sistem webdriver.chrome.driver; untuk informasi lebih lanjut, lihat kode di sini . Versi terbaru dapat diunduh dari Tautan

Bagaimana saya bisa membuat Chrome untuk menguji kasus uji Selenium-WebDriver?

Pangeran
sumber
Akan sangat membantu jika Anda dapat mengetahui, apakah Anda telah mengunduh driver selenium chrome dari code.google.com/p/chromedriver/downloads/list dan menambahkannya ke pustaka dalam gerhana di bawah "Tambahkan Guci Eksternal" sebelum menjalankan selenium-java Anda kode.
Hemanth

Jawaban:

252

Anda perlu mengunduh driver yang dapat dieksekusi dari: Unduh ChromeDriver

Maka yang perlu Anda lakukan adalah menggunakan yang berikut sebelum membuat objek driver (sudah ditampilkan dalam urutan yang benar):

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

Ini diekstraksi dari panduan paling berguna dari Dokumentasi ChromeDriver .

aimbire
sumber
@imbimbi: hei saya menghadapi masalah yang sama. Saya melakukan hal yang sama seperti yang Anda sarankan tetapi mendapatkan kesalahan ini. "java.lang.IllegalStateException: Eksekusi driver tidak ada: D: \ selenimPRJarg1 \ chromedriver.exe" Apakah saya kehilangan sesuatu "?
kTiwari
Anda harus mengunduh Selenium Standalone Server dari sini docs.seleniumhq.org/download , dan tambahkan file jar sebagai ketergantungan pada proyek Java Anda.
dikirill
4
di mana Anda menggunakan / ketik ini? System.setProperty ("webdriver.chrome.driver", "/ path / to / chromedriver"); Driver WebDriver = ChromeDriver baru ();
tijnn
1
Saya telah menjelajahi setiap jawaban untuk pertanyaan ini dan hanya yang ini yang bekerja untuk saya. (y)
puffles
Walaupun ini benar secara teknis, Anda seharusnya tidak menetapkan variabel lingkungan dalam kode, itu sama dengan hard coding lintasan dalam kode Anda. Variabel lingkungan harus ditetapkan pada mesin yang Anda jalankan kodenya, memungkinkan setiap mesin untuk menyimpan driver chrome yang dapat dieksekusi di tempat yang unik tetapi semuanya masih berfungsi.
Ardesco
21

Unduh versi pembaruan driver chrome dari Driver Chrome. Silakan baca catatan rilis juga di sini. Jika Browser chrome diperbarui maka Anda perlu mengunduh chormedriver baru dari tautan di atas karena itu akan kompak dengan versi browser baru.

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

  }

 }
Ankit jain
sumber
3
Nah, itu solusi rumit. Saya menyarankan Anda untuk mengubah ini jika itu yang Anda gunakan saat ini.
aimbire
1
Tautan unduhan sekarang kedaluwarsa.
Lewat Coding
Kode ini tidak berfungsi di Google Chrome Versi 69.0.3497.100 (Bangun Resmi) (64-bit). Tolong sarankan kode baru. Sampai sekarang ini bekerja di versi yang lebih lama kurang dari versi 65.0.0
Mitesh Thakery
18

Anda harus mengunduh chromeDriver di folder, dan menambahkan folder ini di variabel PATH Anda. Anda harus memulai ulang konsol untuk membuatnya berfungsi.

Fabrice31
sumber
8

Jika Anda menggunakan homebrew pada MacOS, Anda dapat menggunakan perintah:

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

Seharusnya berfungsi dengan baik setelah itu tanpa konfigurasi lainnya.

angsa
sumber
2
sekarang brew tap homebrew/cask && brew cask install chromedriver.
luk2302
6

Anda perlu menginstal driver chrome. Anda dapat menginstal paket ini menggunakan nugget seperti yang ditunjukkan di bawah ini

Prathap Kudupu
sumber
1
Ini bisa menjadi satu tetapi versi di NuGet terlalu tua: 2.10.0 tanggal 13 Oktober 2014
Tiago Freitas Leal
Kembali usang pada 23 Maret. Tidak dapat digunakan di Chrome terbaru.
willem
6

Anda dapat menggunakan kode di bawah ini untuk menjalankan kasus uji di Chrome menggunakan driver 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();
    }
}
Rakesh Chaudhari
sumber
5

Temukan versi terbaru di chromedriver sini . Setelah diunduh, unzip di root instalasi python Anda, mis. C:/Program Files/Python-3.5, Dan hanya itu. Anda bahkan tidak perlu menentukan jalur di mana saja dan / atau menambah chromedriverjalur Anda atau sejenisnya. Saya baru saja melakukannya pada instalasi Python yang bersih dan berhasil.

tagoma
sumber
4
saran buruk ... jangan mencemari instalasi python Anda
Corey Goldberg
juga, OP tidak pernah menetapkan Python
Corey Goldberg
4

Unduh driver chrome versi terbaru dan gunakan kode ini:

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");
Anuj Teotia
sumber
1

Di Ubuntu, Anda cukup menginstal chromium-chromedriverpaket:

apt install chromium-chromedriver

Ketahuilah bahwa ini juga menginstal versi selenium yang sudah ketinggalan zaman. Untuk menginstal selenium terbaru:

pip install selenium
serv-inc
sumber
0

Semua jawaban di atas benar, berikut adalah sedikit menyelam jauh ke dalam masalah dan solusinya.

Konstruktor pengemudi di selenium misalnya

WebDriver driver = new ChromeDriver();

mencari driver executable, dalam hal ini driver chrome mencari driver executable chrome, dalam hal layanan tidak dapat menemukan executable pengecualian dilemparkan

ini adalah tempat pengecualian berasal (perhatikan metode 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;
  }

Berikut ini adalah metode keadaan cek yang melemparkan pengecualian

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

SOLUSI : atur properti sistem sebelum membuat objek driver sebagai berikut

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

berikut ini adalah cuplikan kode (untuk chrome dan firefox) tempat layanan driver mencari driver yang dapat dieksekusi:

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

di mana CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" dan GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"

serupa halnya dengan browser lain, berikut ini adalah snapshot dari daftar implementasi browser yang tersedia

masukkan deskripsi gambar di sini

chuha.billi
sumber
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");
Ghanshyam
sumber
0

Saya memasukkan biner ke dalam direcotry sumber daya proyek saya seperti:

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

Kode:

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();
}
Jonas_Hess
sumber
-2

Unduh exe dari chromedriver dan ekstrak di lokasi proyek saat ini. Di sini tautannya, tempat kami dapat mengunduh versi terbaru dari chromedriver.

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

Di sini kode sederhana untuk browser peluncuran dan arahkan ke url.

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

WebDriver driver = new ChromeDriver();

driver.get("https://any_url.com");
ER.antra
sumber
Unduh chromedriver dan ekstrak. selanjutnya buat folder di proyek Anda dan beri nama sebagai chromedriver dan simpan file .exe di dalamnya. dan gunakan jalur ini. Ini adalah contoh kode sederhana. 'code' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); Driver WebDriver = ChromeDriver baru (); driver.get (" google.co.in" ); WebElement searchbox = driver.findElement (By.name ("q")); searchbox.sendKeys ("tutorial video selenium terbaik gratis"); searchbox.submit ();
vinay
Tolong, pertimbangkan untuk memperbarui jawaban ini dengan info tambahan yang dikomentari vinay.
Ricardo Souza