Як запустити тестові випадки Selenium WebDriver в Chrome?


160

Я спробував це

WebDriver driver = new ChromeDriver();

Але я отримую помилку як

Невдалі тести: setUp (com.TEST): шлях до виконуваного драйвера повинен встановлюватися властивістю системи webdriver.chrome.driver; Для отримання додаткової інформації дивіться код тут . Останню версію можна завантажити з Link

Як я можу змусити Chrome перевірити тестові кейси Selenium-WebDriver?


Було б корисно, якщо ви можете сказати, завантажили ви драйвер селену хрому з code.google.com/p/chromedriver/downloads/list і додали його до бібліотеки при затемненні у розділі "Додати зовнішні банки" перед запуском селен-яви код.
Гемант

Відповіді:


252

Вам потрібно завантажити виконавчий драйвер з: Завантажити ChromeDriver

Тоді все, що вам потрібно зробити, - це скористатися наступним, перш ніж створити об’єкт драйвера (вже показаний у правильному порядку):

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

Це було вилучено з найбільш корисного посібника з Документації ChromeDriver .


@aimbire: Ей, я зіткнувся з тією ж проблемою. Я зробив те саме, що запропонував і ви, але отримав цю помилку. "java.lang.IllegalStateException: Виконаний файл драйвера не існує: D: \ selenimPRJarg1 \ chromedriver.exe" Я щось пропускаю "?
kTiwari

Вам потрібно завантажити окремий сервер Selenium звідси docs.seleniumhq.org/download та додати jar файл як залежність до вашого проекту Java.
dikirill

4
де ви використовуєте / набираєте це? System.setProperty ("webdriver.chrome.driver", "/ path / to / chromedriver"); Драйвер WebDriver = новий ChromeDriver ();
tijnn

1
Я вивчив кожну відповідь на це питання, і лише ця працювала на мене. (у)
слойки

Хоча це технічно правильно, ви дійсно не повинні встановлювати цю екологічну змінну в коді, це те саме, що жорстке кодування шляху у вашому коді. На машині, на якій ви запускаєте код, слід встановити змінну навколишнього середовища, що дозволяє кожній машині зберігати виконуваний драйвер хрому в унікальному місці, але все ще працює.
Ardesco

21

Завантажити оновлення версії хромованою драйвера від Chrome Driver ласка , прочитайте записку випуску, а ось якщо браузер Chrome оновлюється , то вам необхідно скачаний новий chormedriver за посиланням вище , тому що це буде компактний в стані з новою версією браузера.

 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
Тепер це громіздке рішення. Я б радив вам змінити це, якщо це те, чим ви користуєтесь сьогодні.
targetbire

1
Посилання для завантаження застаріло.
Пройшов кодування

Цей код не працює у версії 69.0.3497.100 Google Chrome (Офіційна збірка) (64-розрядна). Будь ласка, брата запропонуйте новий код. До цього часу він працював у старшій версії менше 65.0.0
Mitesh Thakery

18

Вам слід завантажити chromeDriver у папку та додати цю папку у змінну PATH. Вам доведеться перезапустити консоль, щоб вона працювала.


8

Якщо ви використовуєте домашню мову на MacOS, ви можете скористатися командою:

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

Після цього воно повинно працювати нормально, без іншої конфігурації.


2
на даний момент це brew tap homebrew/cask && brew cask install chromedriver.
luk2302

6

Потрібно встановити драйвер хрому. Ви можете встановити цей пакет за допомогою самородка, як показано нижче


1
Це може бути той, але версія NuGet занадто стара: 2.10.0 від 13 жовтня 2014 р.
Tiago Freitas Leal

23 березня знову застарів. Неможливо використовувати в останньому Chrome.
Віллем

6

Ви можете використовувати наведений нижче код для запуску тестових випадків у Chrome за допомогою веб-драйвера 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

Знайдіть останню версію chromedriver тут . Після завантаження розпакуйте його в корені встановлення python, наприклад C:/Program Files/Python-3.5, і все. Вам навіть не потрібно вказувати шлях де завгодно та / або додавати chromedriverна свій шлях тощо. Я щойно це зробив на чистій установці Python, і це працює.


4
погана порада ... не забруднюйте свою установку пітона
Corey Goldberg

також ОП ніколи не вказував Python
Corey Goldberg

4

Завантажте останню версію драйвера хрому та використовуйте цей код:

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

На Ubuntu ви можете просто встановити chromium-chromedriverпакет:

apt install chromium-chromedriver

Майте на увазі, що для цього також встановлена ​​застаріла версія селену. Щоб встановити останній селен:

pip install selenium

0

Усі відповіді, наведені вище, є правильними. Далі йде невелике глибоке занурення у проблему та рішення.

Наприклад, конструктор драйверів у селені

WebDriver driver = new ChromeDriver();

здійснює пошук виконуваного драйвера, у цьому випадку драйвер Chrome шукає виконуваний драйвер хрому, якщо служба не в змозі знайти виконуваний файл, викид викидається

звідси походить виняток (зверніть увагу на метод перевірки стану)

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

Далі йде метод перевірки стану, який видає виняток

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

РІШЕННЯ : встановіть властивість системи перед створенням об'єкта драйвера наступним чином

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

далі - фрагмент коду (для chrome та firefox), де служба водія шукає виконуваний файл драйвера:

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

де CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" і GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"

аналогічно це стосується інших браузерів, далі - короткий огляд списку доступних реалізацій браузера

введіть тут опис зображення


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

Я включив двійкову в свої проекти директорій так:

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

Код:

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

Завантажте EXE-хромодрук та витягніть його на поточне місце розташування проекту. Тут посилання, де ми можемо завантажити останню версію хромодрайвера.

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

Тут простий код для браузера запуску та перейдіть до URL.

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

WebDriver driver = new ChromeDriver();

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

Завантажте хромовідвід і витягніть його. Далі створіть у вашому проекті папку і назвіть її як хромедрівер та збережіть у ній файл .exe. і використовувати цей шлях. Це простий приклад коду. 'код' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); Драйвер WebDriver = новий ChromeDriver (); driver.get (" google.co.in" ); WebElement searchbox = driver.findElement (ім'я. (Q)); searchbox.sendKeys ("найкращі безкоштовні відео-уроки з селену"); searchbox.submit ();
вiн

Будь ласка, уважно оновлюйте цю відповідь додатково прокоментованою інформацією vinay.
Рікардо Суза
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.