Начало работы с ChromeDriver

На этой странице описано, как начать использовать ChromeDriver для тестирования вашего веб-сайта на настольном компьютере (Windows/Mac/Linux). Вы также можете прочитать «Начало работы с Android» или «Начало работы с ChromeOS» .

ChromeDriver — это отдельный исполняемый файл, который Selenium WebDriver использует для управления Chrome. Он поддерживается командой Chromium при помощи участников WebDriver. Если вы не знакомы с Selenium WebDriver, вам следует зайти на сайт Selenium .

Выполните следующие действия, чтобы настроить тесты для работы с ChromeDriver:

  • Убедитесь, что Chromium/Google Chrome установлен в известном месте.
  • Загрузите двоичный файл ChromeDriver для вашей платформы в разделе загрузок на этом сайте.
  • Помогите WebDriver найти загруженный исполняемый файл ChromeDriver.

Любой из этих шагов должен помочь:

  1. включите местоположение ChromeDriver в переменную среды PATH
  2. ( только для Java ) укажите его местоположение с помощью системного свойства webdriver.chrome.driver (см. пример ниже).
  3. ( Только для Python ) включите путь к ChromeDriver при создании экземпляра webdriver.Chrome (см. пример ниже).

Образец теста

Ява:

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

Питон:

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

Контролируйте время жизни ChromeDriver

Класс ChromeDriver запускает серверный процесс ChromeDriver при создании и завершает его при вызове выхода. Это может привести к потере значительного количества времени для больших наборов тестов, в которых для каждого теста создается экземпляр ChromeDriver. Есть два варианта исправить это:

  1. Используйте ChromeDriverService. Это доступно для большинства языков и позволяет вам самостоятельно запускать или останавливать сервер ChromeDriver. См. здесь пример Java (с 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...
 
}
}

Питон:

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. Перед запуском тестов запустите сервер ChromeDriver отдельно и подключитесь к нему с помощью Remote WebDriver.

Терминал:

$ ./chromedriver
Starting ChromeDriver
76.0.3809.68 (...) on port 9515
...

Ява:

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