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
- ChromeDriver s'attend à ce que Chrome soit installé à l'emplacement par défaut de votre plate-forme. Vous pouvez également forcer ChromeDriver à utiliser un emplacement personnalisé en définissant une fonctionnalité spéciale.
- 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:
- Inclure l'emplacement du ChromeDriver dans votre variable d'environnement PATH
- (Java uniquement) spécifiez son emplacement à l'aide de la propriété système webdriver.chrome.driver (voir l'exemple ci-dessous).
- (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:
- 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()
- 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();
}
}