Inizia a utilizzare ChromeDriver

Questa pagina descrive come iniziare a utilizzare ChromeDriver per testare il tuo sito web sul computer (Windows/Mac/Linux). Puoi anche leggere la Guida introduttiva ad Android o Guida introduttiva a ChromeOS.

Configurazione

ChromeDriver è un eseguibile separato che Selenium WebDriver utilizza per controllare Chrome. È gestito dal team di Chromium con l'aiuto dei collaboratori di WebDriver. Se non hai dimestichezza con Selenium WebDriver, visita il sito di Selenium.

Segui questi passaggi per configurare i test per l'esecuzione con ChromeDriver:

  • Assicurati che Chromium/Google Chrome siano installati in una posizione riconosciuta
  • Scarica il file binario di ChromeDriver per la tua piattaforma nella sezione Download di questo sito
  • Aiuta WebDriver a trovare l'eseguibile ChromeDriver scaricato

Ognuno di questi passaggi dovrebbe risolvere il problema:

  1. includi la posizione di ChromeDriver nella variabile di ambiente PATH
  2. (Solo Java) specifica la relativa posizione utilizzando la proprietà di sistema webdriver.chrome.driver (vedi l'esempio di seguito).
  3. (Solo Python) include il percorso di ChromeDriver quando crei un'istanza webdriver.Chrome (vedi l'esempio di seguito).

Test di esempio

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

Controlla l'intero ciclo di vita di ChromeDriver

La classe ChromeDriver avvia il processo del server ChromeDriver al momento della creazione e lo termina quando viene richiamata l'uscita. Ciò può comportare una notevole quantità di tempo per le suite di test di grandi dimensioni in cui viene creata un'istanza ChromeDriver per ogni test. Esistono due opzioni per risolvere il problema:

  1. Utilizzare ChromeDriverService. Questa opzione è disponibile per la maggior parte delle lingue e ti consente di avviare o arrestare autonomamente il server ChromeDriver. Vedi qui per un esempio Java (con 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. Avvia il server ChromeDriver separatamente prima di eseguire i test e connettiti al server utilizzando il WebDriver remoto.

Terminale:

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