Как запустить тестовые случаи Selenium WebDriver в Chrome?


160

Я пробовал это

WebDriver driver = new ChromeDriver();

Но я получаю ошибку как

Неудачные тесты: setUp (com.TEST): путь к исполняемому файлу драйвера должен быть задан системным свойством webdriver.chrome.driver; Для получения дополнительной информации см. код здесь . Последнюю версию можно скачать по ссылке

Как я могу сделать Chrome для тестирования тестовых случаев Selenium-WebDriver?


Было бы полезно, если бы вы могли сказать, скачали ли вы драйвер селена chrome с code.google.com/p/chromedriver/downloads/list и добавили его в библиотеку в eclipse в разделе «Добавить внешние банки» перед запуском вашего selenium-java код.
Hemanth

Ответы:


252

Вам необходимо скачать исполняемый драйвер с: ChromeDriver Download

Затем все, что вам нужно сделать, это использовать следующее перед созданием объекта драйвера (уже показан в правильном порядке):

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

Это было извлечено из наиболее полезного руководства из документации ChromeDriver .


@aimbire: эй, я столкнулся с той же проблемой. Я сделал то же самое, что вы предложили, но получил эту ошибку. "java.lang.IllegalStateException: исполняемый файл драйвера не существует: D: \ selenimPRJarg1 \ chromedriver.exe" Я что-то упустил "?
kTiwari

Вы должны загрузить Selenium Standalone Server отсюда docs.seleniumhq.org/download и добавить файл jar в качестве зависимости к вашему Java-проекту.
Дикирилл

4
где вы используете / введите это? System.setProperty ("webdriver.chrome.driver", "/ path / to / chromedriver"); Драйвер WebDriver = новый ChromeDriver ();
Тайн

1
Я изучил каждый ответ на этот вопрос, и только этот работал для меня. (у)
пафло

Хотя это технически правильно, вы не должны устанавливать эту переменную среды в коде, это то же самое, что жесткое кодирование пути в вашем коде. На машине, на которой вы запускаете код, должна быть установлена ​​переменная среды, позволяющая каждой машине хранить исполняемый файл драйвера Chrome в уникальном месте, но все должно работать.
Ардеско

21

Загрузите обновленную версию драйвера chrome из 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
Теперь это громоздкое решение. Я бы посоветовал вам изменить это, если это то, что вы используете в настоящее время.
цель

1
Ссылка для скачивания устарела.
Ушел кодирование

Этот код не работает в Google Chrome версии 69.0.3497.100 (официальная сборка) (64-разрядная версия). Пожалуйста, брат, предложите новый код. До сих пор он работал в более старой версии, чем версия
65.0.0

18

Вы должны загрузить chromeDriver в папку и добавить эту папку в переменную PATH. Вам придется перезапустить консоль, чтобы она заработала.


8

Если вы используете homebrew на MacOS, вы можете использовать команду:

(РЕДАКТИРОВАТЬ) :brew tap homebrew/cask && brew cask install chromedriver

После этого все должно работать без каких-либо других настроек.


2
сейчас это так brew tap homebrew/cask && brew cask install chromedriver.
luk2302

6

Вам необходимо установить Chrome драйвер. Вы можете установить этот пакет, используя самородок, как показано ниже


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
плохой совет ... не загрязняйте вашу установку на python
Кори Голдберг

Кроме того, OP никогда не указывал Python
Кори Голдберг

4

Загрузите последнюю версию драйвера Chrome и используйте этот код:

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 ищет исполняемый файл драйвера 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), где служба драйверов выполняет поиск исполняемого файла драйвера:

Хром:

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

Fire Fox:

@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-файл chromedriver и распакуйте его в текущую папку проекта. Здесь ссылка, где мы можем скачать последнюю версию chromedriver.

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

Загрузите хромедрайвер и распакуйте его. Затем создайте папку в своем проекте и назовите ее как chromedriver и сохраните в ней файл .exe. и использовать этот путь. Это простой пример кода. 'code' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); Драйвер WebDriver = новый ChromeDriver (); driver.get (" google.co.in" ); WebElement searchbox = driver.findElement (By.name ("q")); searchbox.sendKeys («лучшие видео уроки селена бесплатно»); searchbox.submit ();
Винай

Пожалуйста, рассмотрите возможность дополнения этого ответа дополнительной информацией.
Рикардо Соуза
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.