Premiers pas avec ChromeDriver

Cette page explique comment utiliser ChromeDriver pour tester votre site Web sur un ordinateur (Windows/Mac/Linux). Vous pouvez également consulter les pages Premiers pas avec Android ou Premiers pas avec ChromeOS.

Prérequis

ChromeDriver est un exécutable distinct que Selenium WebDriver utilise pour contrôler Chrome. Il est géré par l'équipe Chromium avec l'aide des contributeurs WebDriver. Si vous ne connaissez pas Selenium WebDriver, consultez le site de Selenium.

Pour configurer vos tests afin qu'ils soient exécutés avec ChromeDriver, procédez comme suit:

  • Assurez-vous que Chromium/Google Chrome est installé à un emplacement reconnu
  • Téléchargez le binaire ChromeDriver pour votre plate-forme dans la section Téléchargements de ce site.
  • Aider WebDriver à trouver l'exécutable ChromeDriver téléchargé

Suivez les étapes ci-dessous pour résoudre le problème:

  1. Inclure l'emplacement du ChromeDriver dans votre variable d'environnement PATH
  2. (Java uniquement) spécifiez son emplacement à l'aide de la propriété système webdriver.chrome.driver (voir l'exemple ci-dessous).
  3. (Python uniquement) inclut le chemin d'accès à ChromeDriver lors de l'instanciation de webdriver.Chrome (voir l'exemple ci-dessous).

Exemple de test

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()

Contrôler la durée de vie du pilote Chrome

La classe ChromeDriver lance le processus du serveur ChromeDriver lors de sa création et l'arrête lorsque la fermeture est appelée. Cela peut faire perdre beaucoup de temps pour les suites de tests volumineuses où une instance ChromeDriver est créée pour chaque test. Deux options s'offrent à vous pour y remédier:

  1. Utilisez ChromeDriverService. Cette fonctionnalité, disponible dans la plupart des langues, vous permet de démarrer ou d'arrêter vous-même le serveur ChromeDriver. Voici un exemple Java (avec 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. Démarrez le serveur ChromeDriver séparément avant d'exécuter vos tests et connectez-vous-y à l'aide du pilote Web distant.

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