¿Cómo ejecutar los casos de prueba de Selenium WebDriver en Chrome?


160

Probé esto

WebDriver driver = new ChromeDriver();

Pero recibo el error como

Pruebas fallidas: setUp (com.TEST): la propiedad del sistema webdriver.chrome.driver debe establecer la ruta al ejecutable del controlador; Para más información, vea el código aquí . La última versión se puede descargar desde Link

¿Cómo puedo hacer que Chrome pruebe los casos de prueba de Selenium-WebDriver?


Sería útil si puede decir, si ha descargado el controlador de selenium chrome de code.google.com/p/chromedriver/downloads/list y lo agregó a la biblioteca en eclipse en "Agregar tarros externos" antes de ejecutar su selenium-java código.
Hemanth

Respuestas:


252

Debe descargar el controlador ejecutable desde: ChromeDriver Descargar

Entonces, todo lo que necesita hacer es usar lo siguiente antes de crear el objeto del controlador (ya se muestra en el orden correcto):

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

Esto se extrajo de la guía más útil de la documentación de ChromeDriver .


@aimbire: hey, estoy enfrentando el mismo problema. Hice lo mismo sugerido por usted, pero recibí este error. "java.lang.IllegalStateException: el ejecutable del controlador no existe: D: \ selenimPRJarg1 \ chromedriver.exe" ¿Me estoy perdiendo algo "?
kTiwari

Debe descargar Selenium Standalone Server desde aquí docs.seleniumhq.org/download y agregar el archivo jar como una dependencia a su proyecto Java.
dikirill

44
¿Dónde usas / escribes esto? System.setProperty ("webdriver.chrome.driver", "/ ruta / a / chromedriver"); Controlador WebDriver = nuevo ChromeDriver ();
tijnn

1
He explorado cada respuesta a esta pregunta y solo esta funcionó para mí. (y)
puffles

Si bien esto es técnicamente correcto, realmente no debería establecer esa variable ambiental en el código, es lo mismo que codificar una ruta en su código. La variable de entorno debe establecerse en la máquina en la que ejecuta el código, permitiendo que cada máquina almacene el ejecutable del controlador de Chrome en un lugar único pero que todo funcione.
Ardesco

21

Descargue la versión de actualización del controlador de Chrome desde el controlador de Chrome. Lea también la nota de la versión aquí. Si se actualiza el navegador de Chrome, entonces debe descargar el nuevo controlador de chormed desde el enlace anterior porque sería compacto con la nueva versión del navegador.

 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
Ahora que es una solución engorrosa. Te aconsejo que cambies esto si es lo que usas hoy en día.
aimbire

1
El enlace de descarga ahora está desactualizado.
Gone Coding

Este código no funciona en la versión 69.0.3497.100 (compilación oficial) de Google Chrome (64 bits). Por favor, sugiera un nuevo código. Hasta ahora estaba funcionando en una versión anterior a la versión 65.0.0
Mitesh Thakery

18

Debe descargar el chromeDriver en una carpeta y agregar esta carpeta en su variable PATH. Tendrás que reiniciar tu consola para que funcione.


8

Si está usando homebrew en un MacOS, puede usar el comando:

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

Debería funcionar bien después de eso sin otra configuración.


2
por ahora lo es brew tap homebrew/cask && brew cask install chromedriver.
luk2302

6

Necesita instalar el controlador de Chrome. Puede instalar este paquete usando nugget como se muestra a continuación


1
Este podría ser el indicado, pero la versión en NuGet es demasiado antigua: 2.10.0 con fecha del 13 de octubre de 2014
Tiago Freitas Leal

Desactualizado nuevamente el 23 de marzo. No se puede usar en la última versión de Chrome.
willem el

6

Puede usar el siguiente código para ejecutar casos de prueba en Chrome con Selenium web-driver:

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

Encuentra la última versión de chromedriver aquí . Una vez descargado, descomprímalo en la raíz de su instalación de Python, por ejemplo C:/Program Files/Python-3.5, y listo. Ni siquiera necesita especificar la ruta en ningún lugar y / o agregar chromedrivera su ruta o similar. Lo hice en una instalación limpia de Python y eso funciona.


44
mal consejo ... no contamine su instalación de Python
Corey Goldberg

Además, el OP nunca especificó Python
Corey Goldberg

4

Descargue la última versión del controlador de Chrome y use este código:

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

En Ubuntu, simplemente puede instalar el chromium-chromedriverpaquete:

apt install chromium-chromedriver

Tenga en cuenta que esto también instala una versión de selenio desactualizada. Para instalar el último selenio:

pip install selenium

0

Todas las respuestas anteriores son correctas, la siguiente es una pequeña inmersión profunda en el problema y la solución.

El constructor del controlador en selenio, por ejemplo

WebDriver driver = new ChromeDriver();

busca el ejecutable del controlador, en este caso, el controlador de Chrome busca el ejecutable del controlador de Chrome, en caso de que el servicio no pueda encontrar el ejecutable, se genera la excepción

De aquí viene la excepción (tenga en cuenta el método de verificación del estado)

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

El siguiente es el método de estado de verificación que arroja la excepción

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

SOLUCIÓN : establezca la propiedad del sistema antes de crear el objeto del controlador de la siguiente manera

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

El siguiente es el fragmento de código (para Chrome y Firefox) donde el servicio del controlador busca el ejecutable del controlador:

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

donde CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver" y GECKO_DRIVER_EXE_PROPERTY = "webdriver.gecko.driver"

similar es el caso de otros navegadores, a continuación se muestra la instantánea de la lista de implementaciones de navegador disponibles

ingrese la descripción de la imagen aquí


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

Incluí el binario en mis recursos de proyectos directamente:

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

Código:

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

Descargue el exe de chromedriver y extráigalo en la ubicación actual del proyecto. Aquí el enlace, donde podemos descargar la última versión de chromedriver.

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

Aquí el código simple para el navegador de inicio y navega a url.

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

WebDriver driver = new ChromeDriver();

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

Descargue el chromedriver y extráigalo. luego cree una carpeta en su proyecto y asígnele el nombre de chromedriver y mantenga el archivo .exe en él. y usa este camino. Este es el ejemplo de código simple. 'código' System.setProperty ("webdriver.chrome.driver", System.getProperty ("user.dir") + "\\ chromedriver \\ chromedriver.exe"); Controlador WebDriver = nuevo ChromeDriver (); driver.get (" google.co.in" ); WebElement searchbox = driver.findElement (By.name ("q")); searchbox.sendKeys ("los mejores video tutoriales de selenio gratis"); searchbox.submit ();
vinay

Por favor, considere actualizar esta respuesta con la información adicional que vinay comentó.
Ricardo Souza
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.