Comenzar a usar ChromeDriver

En esta página, se documenta cómo comenzar a usar ChromeDriver para probar tu sitio web en una computadora de escritorio (Windows/Mac/Linux). También puedes leer Cómo comenzar a usar Android o Cómo comenzar a usar ChromeOS.

Configuración

ChromeDriver es un archivo ejecutable independiente que Selenium WebDriver utiliza para controlar Chrome. Lo mantiene el equipo de Chromium con la ayuda de los colaboradores de WebDriver. Si no conoces Selenium WebDriver, te recomendamos visitar el sitio de Selenium.

Sigue estos pasos para configurar tus pruebas y ejecutarlas con ChromeDriver:

  • Asegúrate de que Chromium o Google Chrome estén instalados en una ubicación reconocida
  • Descarga el objeto binario de ChromeDriver para tu plataforma en la sección de descargas de este sitio
  • Ayuda a WebDriver a encontrar el ejecutable de ChromeDriver que descargaste

Cualquiera de estos pasos debería funcionar:

  1. incluye la ubicación de ChromeDriver en la variable de entorno PATH
  2. Especifica su ubicación (solo Java) con la propiedad del sistema webdriver.chrome.driver (consulta el ejemplo a continuación).
  3. Incluye la ruta de acceso a ChromeDriver cuando crees una instancia de webdriver.Chrome (solo Python) (consulta el siguiente ejemplo).

Prueba de muestra

Java:

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.junit.Test;
public class GettingStarted {   
@Test   
public void testGoogleSearch() throws InterruptedException {
  // Optional. If not specified, WebDriver searches the PATH for chromedriver.
  // System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
  // WebDriver driver = new ChromeDriver();
  driver.get("http://www.google.com/"); 
  Thread.sleep(5000);  // Let the user actually see something!
  WebElement searchBox = driver.findElement(By.name("q"));
  searchBox.sendKeys("ChromeDriver");
  searchBox.submit(); 
  Thread.sleep(5000);  // Let the user actually see something!
  driver.quit();  
 }
}

Python:

import time
from selenium import webdriver

driver = webdriver.Chrome('/path/to/chromedriver')  # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()

Controla el ciclo de vida de ChromeDriver

La clase ChromeDriver inicia el proceso del servidor de ChromeDriver en la creación y lo finaliza cuando se llama a salir. Esto puede desperdiciar una cantidad significativa de tiempo en el caso de los grandes paquetes de pruebas en los que se crea una instancia de ChromeDriver por prueba. Existen dos opciones para solucionar este problema:

  1. Usa ChromeDriverService. Esta opción está disponible para la mayoría de los idiomas y te permite iniciar o detener el servidor de ChromeDriver por tu cuenta. Consulta aquí un ejemplo de Java (con JUnit 4):
import java.io.*;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.remote.*;
public class GettingStartedWithService {
  private static ChromeDriverService service;
  private WebDriver driver;
  @BeforeClass
  public static void createAndStartService() throws IOException {
      service = new ChromeDriverService.Builder()
              .usingDriverExecutable(new File("/path/to/chromedriver"))
              .usingAnyFreePort()
              .build();
      service.start();
  }
  
  @AfterClass   
  public static void stopService() {
    service.stop();
  }

  @Before   
  public void createDriver() {
    driver = new RemoteWebDriver(service.getUrl(), new ChromeOptions());
  }

  @After   public void quitDriver() {
    driver.quit();
  }

  @Test   
  public void testGoogleSearch() {
    driver.get("http://www.google.com");
    // rest of the test...
  }
}

Python:

import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service('/path/to/chromedriver')
service.start()
driver = webdriver.Remote(service.service_url)
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
driver.quit()
  1. Inicia el servidor de ChromeDriver por separado antes de ejecutar las pruebas y conéctalo con el WebDriver remoto.

Terminal:

$ ./chromedriver
Starting ChromeDriver
76.0.3809.68 (...) on port 9515
...

Java:

import java.net.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.openqa.selenium.remote.*;  

public class GettingStartedRemote {

  public static void main(String[] args) throws MalformedURLException {
    WebDriver driver = new RemoteWebDriver(
        new URL("http://127.0.0.1:9515"),
        new ChromeOptions());
    driver.get("http://www.google.com");
    driver.quit();
  }
}