Pierwsze kroki z ChromeDriver

Z tej strony dowiesz się, jak zacząć używać ChromeDriver do testowania witryny na komputerze (Windows/Mac/Linux). Możesz też przeczytać Pierwsze kroki z Androidem lub Pierwsze kroki z ChromeOS

Konfiguracja

ChromeDriver to oddzielny plik wykonywalny, którego Selenium WebDriver używa do sterowania Chrome. Zajmuje się nim zespół Chromium z pomocą współtwórców WebDriver. Jeśli nie znasz usługi Selenium WebDriver, odwiedź witrynę Selenium.

Aby skonfigurować testy pod kątem działania z użyciem ChromeDriver, wykonaj te czynności:

  • Upewnij się, że Chromium/Google Chrome jest zainstalowany w rozpoznanej lokalizacji
  • Pobierz plik binarny ChromeDriver dla swojej platformy z sekcji pobierania na tej stronie.
  • Pomóż usłudze WebDriver znaleźć pobrany plik wykonywalny ChromeDriver

Każda z tych czynności powinna załatwić sprawę:

  1. uwzględnij lokalizację ChromeDriver w zmiennej środowiskowej PATH
  2. (tylko w języku Java) określ lokalizację za pomocą właściwości systemowej webdriver.chrome.driver (zobacz przykład poniżej).
  3. (tylko w Pythonie) podczas tworzenia instancji webdriver.Chrome podaj ścieżkę do ChromeDriver (zobacz przykład poniżej).

Przykładowy 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() 

Kontrolowanie czasu działania ChromeDriver

Klasa ChromeDriver rozpoczyna proces serwera ChromeDriver w momencie utworzenia i kończy go po wywołaniu zakończenia. Może to zaoszczędzić dużo czasu w przypadku dużych zestawów testowych, w których w jednym teście tworzona jest instancja ChromeDriver. Możesz to zmienić na 2 sposoby:

  1. korzystać z usługi ChromeDriverService. Jest to dostępne w większości języków i umożliwia samodzielne uruchomienie lub zatrzymanie serwera ChromeDriver. Tutaj znajdziesz przykład Javy (w 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. Przed przeprowadzeniem testów uruchom serwer ChromeDriver oddzielnie i połącz się z nim przy użyciu 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();   } }