Inizia a utilizzare ChromeDriver

Questa pagina documenta come iniziare a utilizzare ChromeDriver per testare il tuo sito web su computer desktop (Windows/Mac/Linux). Puoi anche leggere Guida introduttiva ad Android oppure 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, dai un'occhiata al sito di Selenium.

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

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

Ognuno di questi passaggi dovrebbe risolvere il problema:

  1. Includi il percorso 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) includi il percorso a ChromeDriver quando crei l'istanza di webdriver.Chrome (vedi l'esempio di seguito)

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

Controllare il lifetime dell'utente di ChromeDriver

La classe ChromeDriver avvia il processo del server ChromeDriver al momento della creazione e lo termina alla chiamata di chiusura. Questo può far sprecare molto tempo per suite di test di grandi dimensioni in cui viene creata un'istanza di ChromeDriver per test. Esistono due opzioni per risolvere questo problema:

  1. Utilizza ChromeDriverService. Questa opzione è disponibile per la maggior parte delle lingue e consente di avviare o arrestare il server ChromeDriver autonomamente. Vedi qui 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 connettilo utilizzando 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();
  }
}