Erste Schritte mit ChromeDriver

Auf dieser Seite wird beschrieben, wie Sie ChromeDriver zum Testen Ihrer Website auf einem Computer (Windows/Mac/Linux) verwenden. Weitere Informationen finden Sie unter Erste Schritte mit Android und Erste Schritte mit ChromeOS.

Einrichtung

ChromeDriver ist eine separate ausführbare Datei, die Selenium WebDriver zur Steuerung von Chrome verwendet. Es wird vom Chromium-Team mit Unterstützung von WebDriver-Beitragenden verwaltet. Wenn Sie mit Selenium WebDriver nicht vertraut sind, sollten Sie die Selenium-Website besuchen.

So richten Sie Ihre Tests für die Ausführung mit ChromeDriver ein:

  • Achten Sie darauf, dass Chromium/Google Chrome an einem erkannten Speicherort installiert ist
  • Laden Sie die ChromeDriver-Binärdatei für Ihre Plattform im Bereich Downloads dieser Website herunter.
  • Hilfe bei der Suche nach der heruntergeladenen ausführbaren ChromeDriver-Datei für WebDriver

Damit sollte das Problem behoben werden:

  1. Fügen Sie den ChromeDriver-Speicherort in Ihre PATH-Umgebungsvariablen ein.
  2. (Nur Java) Geben Sie den Speicherort mithilfe der Systemeigenschaft webdriver.chrome.driver an (siehe Beispiel unten).
  3. (nur Python) bei der Instanziierung von webdriver.Chrome den Pfad zu ChromeDriver angeben (siehe Beispiel unten)

Beispieltest

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

Lebensdauer von ChromeDriver steuern

Die ChromeDriver-Klasse startet den ChromeDriver-Serverprozess beim Erstellen und beendet ihn beim Aufrufen von quit. Dies kann bei großen Testsuiten, in denen eine ChromeDriver-Instanz pro Test erstellt wird, viel Zeit verschwenden. Es gibt zwei Möglichkeiten, dies zu beheben:

  1. Verwenden Sie den ChromeDriverService. Diese Funktion ist für die meisten Sprachen verfügbar. Sie können damit den ChromeDriver-Server selbst starten oder beenden. Hier ein Java-Beispiel (mit 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. Starten Sie den ChromeDriver-Server separat, bevor Sie Ihre Tests ausführen, und stellen Sie über Remote WebDriver eine Verbindung her.

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