Premiers pas avec ChromeDriver

Cette page explique comment commencer à utiliser ChromeDriver pour tester votre site Web sur de bureau (Windows/Mac/Linux). Vous pouvez également consulter Premiers pas avec Android ou Premiers pas avec ChromeOS

Configuration

ChromeDriver est un exécutable distinct que Selenium WebDriver utilise pour contrôler Chrome. Elle est gérée 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 en vue de leur exécution avec ChromeDriver, procédez comme suit:

  • Assurez-vous que Chromium/Google Chrome est installé à un emplacement reconnu <ph type="x-smartling-placeholder">
  • 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é

N'importe laquelle des étapes suivantes devrait suffire:

  1. inclure l'emplacement du pilote du navigateur Chrome 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) incluent 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 ChromeDriver

La classe ChromeDriver lance le processus du serveur ChromeDriver lors de sa création et l'arrête lors de l'appel de la fermeture. Cela peut faire perdre beaucoup de temps pour les grands ensembles de tests où une instance ChromeDriver est créée pour chaque test. Vous disposez de deux options pour remédier à ce problème:

  1. Utilisez ChromeDriverService. Cette fonctionnalité est disponible dans la plupart des langues et vous permet de démarrer ou d'arrêter le serveur ChromeDriver vous-même. 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 à celui-ci à l'aide du WebDriver 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();
  }
}