На этой странице описано, как начать использовать ChromeDriver для тестирования вашего веб-сайта на настольном компьютере (Windows/Mac/Linux). Вы также можете прочитать «Начало работы с Android» или «Начало работы с ChromeOS» .
Настраивать
ChromeDriver — это отдельный исполняемый файл, который Selenium WebDriver использует для управления Chrome. Он поддерживается командой Chromium при помощи участников WebDriver. Если вы не знакомы с Selenium WebDriver, вам следует зайти на сайт Selenium .
Выполните следующие действия, чтобы настроить тесты для работы с ChromeDriver:
- Убедитесь, что Chromium и Google Chrome установлены в известном месте.
- ChromeDriver ожидает, что Chrome будет установлен в папку по умолчанию для вашей платформы. Вы можете заставить ChromeDriver использовать собственное местоположение , установив специальную возможность.
- Загрузите двоичный файл ChromeDriver для вашей платформы.
- Помогите WebDriver найти загруженный исполняемый файл ChromeDriver.
Любой из этих шагов должен сработать:
- Включите местоположение ChromeDriver в переменную среды PATH.
- ( Только для Java ) Укажите его местоположение с помощью системного свойства
webdriver.chrome.driver
(см. пример ниже). - ( Только для Python ) Включите путь к ChromeDriver при создании экземпляра
webdriver.Chrome
. См. следующие образцы.
Пример теста 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()
Контролируйте время жизни ChromeDriver
Класс ChromeDriver запускает серверный процесс ChromeDriver при создании и завершает его при вызове выхода. Это может привести к потере значительного количества времени для больших наборов тестов, в которых для каждого теста создается экземпляр ChromeDriver. Есть два варианта исправить это: ChromeDriverService и запуск ChromeDriver отдельно.
ChromeDriverService
Используйте 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()
Запустите ChromeDriver отдельно
Перед запуском тестов запустите сервер 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();
}
}