Ga aan de slag met ChromeDriver

Deze pagina documenteert hoe u ChromeDriver kunt gaan gebruiken voor het testen van uw website op desktop (Windows/Mac/Linux). U kunt ook Aan de slag met Android of Aan de slag met ChromeOS lezen.

Installatie

ChromeDriver is een afzonderlijk uitvoerbaar bestand dat Selenium WebDriver gebruikt om Chrome te besturen. Het wordt onderhouden door het Chromium-team met hulp van WebDriver-bijdragers. Als u niet bekend bent met Selenium WebDriver, kijk dan eens op de Selenium-site .

Volg deze stappen om uw tests in te stellen voor uitvoering met ChromeDriver:

  • Zorg ervoor dat Chromium/Google Chrome op een erkende locatie is geïnstalleerd
  • Download het binaire ChromeDriver-bestand voor uw platform in het downloadgedeelte van deze site
  • Help WebDriver het gedownloade uitvoerbare bestand van ChromeDriver te vinden

Elk van deze stappen zou voldoende moeten zijn:

  1. neem de ChromeDriver-locatie op in uw PATH-omgevingsvariabele
  2. ( Alleen Java ) geef de locatie op met behulp van de systeemeigenschap webdriver.chrome.driver (zie voorbeeld hieronder)
  3. ( Alleen Python ) neem het pad naar ChromeDriver op bij het instantiëren van webdriver.Chrome (zie voorbeeld hieronder)

Voorbeeldtest

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

Beheer de levensduur van ChromeDriver

De ChromeDriver-klasse start het ChromeDriver-serverproces bij het maken en beëindigt het wanneer quit wordt aangeroepen. Dit kan een aanzienlijke hoeveelheid tijd verspillen voor grote testsuites waarbij per test een ChromeDriver-instantie wordt gemaakt. Er zijn twee mogelijkheden om dit te verhelpen:

  1. Gebruik de ChromeDriverService. Dit is beschikbaar voor de meeste talen en hiermee kunt u de ChromeDriver-server zelf starten of stoppen. Zie hier voor een Java-voorbeeld (met 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. Start de ChromeDriver-server afzonderlijk voordat u uw tests uitvoert, en maak er verbinding mee via de Remote WebDriver.

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