Блог вебразработчика
  • ГЛАВНАЯ
  • ПОДПИСКА

Selenium: запуск Chrome Driver

Сен05
2012
Написал Tatyana

Для запуска тестов в Google Chrome, помимо библиотеки Selenium WebDriver, необходимы наличие и запуск специального исполняемого файла, который выступает в качестве моста между браузером и драйвером. Сам исполняемый файл называется «chromedriver», его можно скачать здесь. Чтобы избежать путаницы со схожим названием org.openqa.selenium.chrome.ChromeDriver, в этой статье исполняемый файл я буду называть ChromeDriver сервером.

После того как Вы скачали исполняемый файл, нужно задать его местоположение. Без этого при инициализации драйвера

WebDriver driver = new ChromeDriver();

возникнет IllegalStateException: "The path to the driver executable must be set by the webdriver.chrome.driver system property;".

Задать местоположение ChromeDriver сервера можно несколькими способами:

  • установив System.setProperty("webdriver.chrome.driver", PATH_TO_CHROMEDRIVER_EXE);;
  • добавив путь к исполняемому файлу в переменную среды PATH (скорее всего после изменения переменной понадобится перезапуск IDE разработки).

Класс ChromeDriver запускает исполняемый файл во время своего создания и останавливает его при вызове метода quit(). Несмотря на то, что ChromeDriver сервер достаточно легковесный, его повторные запуск и остановка добавляют заметную задержку для тестов, в которых драйвер инициализируется для каждого тестового метода. Чтобы избежать этой проблемы, Вы можете использовать один из следующих способов:

  1. напрямую управлять запуском и остановкой ChromeDriver сервера с помощью ChromeDriverService:
  2. import java.io.File;
    import java.io.IOException;
    
    import org.junit.After;
    import org.junit.AfterClass;
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriverService;
    
    public class ChromeDriverTest {
    	 private static ChromeDriverService service;
    	 public static WebDriver driver;
    
    	 @BeforeClass
    	 public static void createAndStartService() throws IOException {
    		 service = new ChromeDriverService.Builder()
    		 	.usingDriverExecutable(new File(PATH_TO_CHROMEDRIVER_EXE))
    	        .usingAnyFreePort()
    	        .build();
    		 service.start();
    	 }
    
    	 @Before
    	 public void setUp(){
    		 driver = new ChromeDriver(service);
    	 }
    
    	 @Test
    	 public void simpleTest() {		
    		 driver.get("http://internetka.in.ua");
    	 }
    
    	 @After
    	 public void tearDown(){
    		 driver.quit();
    	 }
    
    	 @AfterClass
    	 public static void createAndStopService() {
    		 service.stop();
    	 }
    }
  3. Запустить ChromeDriver сервер сам по себе перед запуском тестов, и подключиться к нему с помощью Remote WebDriver
  4. WebDriver driver = new RemoteWebDriver("http://localhost:9515", 
    	 	 	 	 	 	 	 	 DesiredCapabilities.chrome());
    

Запуск браузера с параметрами

ChromeDriver может запускать браузер с конкретными флагами командной строки, которые будут переданы в браузер при запуске.

	 ChromeOptions option = new ChromeOptions();
	 option.addArguments("--window-size=1500,1000");
	 driver = new ChromeDriver(option);

Полный список возможный флагов можно посмотреть здесь.

  • Нравится
  • Tweet

Опубликовано в Selenium - Помечено ChromeDriver, Selenium WebDriver
Рассказать всем Twitter Facebook Delicious StumbleUpon E-Mail
← Selenium PageFactory и FieldDecorator (часть 2)
ChromeDriver error: «Could not find default Chrome binary» →

4 комментариев

  1. Long's Gravatar Long
    14.03.2013 at 08:55 | Permalink

    Есть еще третий способ задания местоположение ChromeDriver сервера

    ChromeDriverService driverService = new ChromeDriverService.Builder()
    .usingDriverExecutable(new File(driverPath))
    .build();

    WebDriver driver = new ChromeDriver(driverService);

    Работает только если браузер нужно открывать на этом же PC.
    Если брайзер нужно открывать на ремоутной машине, то на ней нужно запускать так:

    java -jar selenium-server-standalone-2.31.0.jar -Dwebdriver.chrome.driver=/chromedriver.exe

    или в режиме грида (это уже отдельная тема)

  2. Andrii_IA's Gravatar Andrii_IA
    22.09.2013 at 14:06 | Permalink

    Добрый день.
    Подскажите, пожалуйста, возможно уже сталкивались с такой ошибкой:

    При запуске одного и того же кода (например, тот что описан выше), который выполняет автотест на хроме, система на одной машине хром запускает без проблем, берет URL и спокойно переходит по нему и дальше по логике теста. А на другой машине, тупо стопорится, в данном случае на строке:

    driver.get(«http://internetka.in.ua»);

    Буду очень благодарен за подсказку, что необходимо сделать (например, настройки брандмауэра или непосредственно самого хрома…).

    Спасибо.

    • Tatyana's Gravatar Tatyana
      23.09.2013 at 09:44 | Permalink

      Добрый день, совпадают ли версии браузеров, путь к ним на машинах?

  3. Анастасия's Gravatar Анастасия
    07.12.2014 at 19:11 | Permalink

    Татьяна, ваш способ запуска хрома с использованием сервиса usingAnyFreePort() запускает у меня несколько окон с браузерами на разных портах. Одновременно открываются 3 окна. Можно ли этого избежать? Нужно только одно окно для последовательного запуска тестов

Свежие записи

  • WebDriver и SSL Untrusted certificate
  • Видеозапись выполнения тестов Selenium
  • Selenium WebDriver: basic авторизация
  • BrowserMob Proxy + Selenium: автоматизация сбора данных о производительности
  • Hibernate 4: UserType пользовательский тип данных (часть 2)

Поиск

Рубрики

  • Hibernate ORM
  • SEO
  • Разное
  • Тестирование
    • JUnit
    • Selenium
    • Thucydides

Метки

Actions AJAX Alert AutoIt ChromeDriver Exceptions ExpectedConditions FindElement FirefoxDriver Hibernate InternetExplorerDriver Java Javascript Jenkins JUnit4 Maven PageFactory Page Object RemoteWebDriver Select Selenium IDE Selenium Server Selenium WebDriver switchTo Thucydides WebDriverWait XPath Автоматизированное тестирование база данных заработок в сети сеть Интернет скорость продвижения сайта статейное продвижение услуги продвижения

Реклама

дарсонваль дома купить дарсонваль в киеве фирма bactosfera

Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.
Donec in mi a arcu cursus commodo non ut metus. Nunc id eros ut augue consequat tempus ut non ligula. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Integer pretium, erat sit amet scelerisque euismod, purus lectus convallis dui, eget imperdiet sapien est ut magna. Nullam elementum, tortor vitae pulvinar mattis, orci neque porta tortor, a feugiat nisi lacus quis diam. Ut gravida augue id est rutrum elementum. Mauris eget felis dolor. Phasellus ante ante, porttitor sit amet lobortis ut, suscipit id neque. Fusce hendrerit dolor nec odio eleifend in auctor enim cursus. Nullam fermentum pretium risus, in hendrerit nulla cursus sit amet. Fusce eu tempus elit. Ut tortor velit, aliquam in ornare vel, feugiat sed nibh. Donec fringilla est id odio lacinia vulputate. Donec nulla urna, congue sit amet pretium non, dictum at orci. Fusce neque sem, fermentum eu tempus nec, mattis venenatis sem. Proin scelerisque velit tristique urna mattis adipiscing. Proin mattis faucibus facilisis. Integer non lacus ac ligula accumsan convallis quis molestie erat. Curabitur imperdiet vestibulum vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Mauris lacus ligula, hendrerit eget suscipit in, sollicitudin nec dui. Suspendisse euismod, lorem pretium gravida rhoncus, enim quam facilisis orci, nec volutpat nisi dolor id lacus. Proin dolor arcu, rutrum eget hendrerit vel, pharetra id elit. Nullam porta euismod suscipit. Pellentesque malesuada consequat sem, et auctor magna aliquam gravida. Nullam blandit dignissim iaculis. Suspendisse non diam nec augue scelerisque iaculis. Nam id dui sed lorem vulputate rhoncus eget eu tellus. In sit amet nisi nunc. Fusce sed aliquet sem. Aliquam sit amet metus metus.

Блог вебразработчика
Функциональное тестирование и продвижение сайтов

Яндекс.Метрика