Про Тестинг: обеспечение качества, тестирование, автоматизация

Раздел: Автоматизация > Практикум > Запуск Selenium Server

Запуск Selenium Server

  1. Введение
  2. Варианты запуска Selenium Server
  3. Java опции
  4. Вывод
  5. Литература

1 Введение

Все знают такой инструмент для тестирования WEB приложений Selenium 1 и один из основных его модулей - Selenium RC. Если нет, то краткое описание можно найти здесь: [1] (Если вы не понимаете English, то воспользуйтесь переводчиком, к примеру Google Translate, но будьте осторожны, так как он переведет вам еще и примеры кода тестов)

Ознакомившись с документацией вы заметили, что до запуска тестов Вам необходимо запускать Selenium Server, однако делать Вам это придется только при использовании Selenium 1.x.x, так как в Selenium 2.x используется другая технология для взаимодействием с браузером [5]. Если же вы всетаки решили использовать старую версию инструмента и Вам необходим запуск Selenium Server, то у вас появляются варианты как и откуда это делать.

Примечание: Для запуска Selenium Server требуется Java версии 1.5 или выше. Если у вас установлена Java версии ниже 1.5, то Selenium Server попросту не запустится.


2 Варианты запуска Selenium Server

Существует 2 способа запуска Selenium Server:

  1. из командной строки
  2. из кода тестов или фреймворка

Оба метода имеют свои плюсы и минусы. Давайте рассмотрим их поближе.

2.1 Запуск Selenium Server из командной строки

Так как Selenium Server написан на джава, то запускать его надо будет через Java Runtime Environment (JRE) версии 1.5 и выше (см. Примечание выше).
Формат запуска из командной строки следующий:

> java [Java options] -jar selenium-server.jar [Selenium Server options]

Java options

Для получения списка возможных опций наберите в командной строке

> java –help

Ниже Вы найдете немного больше информации о Java опциях

Selenium Server options [2]

  • port <nnnn> - номер порта, на котором будет работать Selenium Server (по умолчанию 4444)
  • timeout <nnnn> - таймаут выполнения команд, в секундах
  • interactive - запускает сервер в интерактивном режиме (позволяет вводить команды непосредственно в консоль сервера)
  • multiWindow - запускает тестирование сайта в окне, отдельном от панели управления, т.о. позволяя тестировать страницы, содержащие фреймы
  • forcedBrowserMode <browser> - заставляет использовать для тестирования определенный браузер, вне зависимости от того, какой браузер будет указан при инициализации очередной сессии тестирования
  • userExtensions <file> - указывает на JavaScript файл с пользовательскими функциями, который необходимо загрузить
  • browserSessionReuse - предотвращает ре-инициализацию браузера между тестами
  • avoidProxy - по умолчанию, проксируются все запросы от браузера. Установив этот флаг, вы укажете что браузеру нужно проксировать только адреса, содержащие “/selenium-server”
  • firefoxProfileTemplate <dir> - по умолчанию, для FireFox, генерируется новый «чистый» профиль при каждом запуске. Данным флагом, вы можете указать, какой профиль необходимо использовать в тестах
  • debug - включает режим отладки, где выводится более детальная информация о выполнении команд, а также диагностические сообщения
  • log - указывает файл, в который следует писать отладочную информацию
  • htmlSuite <browser> <startURL> <suiteFile> <resultFile> - запускает на выполнение тестовый набор (в формате HTML, который использовался для Selenium Core), с использованием указанного браузера, в указанном домене. По окончании тестов, сервер останавливается. Параметры <suiteFile> и <resultFile>, должны содержать абсолютный путь к тестовому набору и файлу, в который будет помещен результат его выполнения
  • proxyInjectionMode - запускает сервер в режиме, проксирующем все содержимое, идущее к тестовому приложению. В этом режиме есть возможность посещать различные домены, а так же доступны следующие дополнительные опции:
    • dontInjectRegex <regex> - опциональный параметр, представляющий собой регулярное выражение, указывающее серверу, какие адреса не нуждаются в инжектировании
    • userJsInjection <file> - опциональный параметр, указывающий JavaScript файл, которые будет инжектирован во все страницы
    • userContentTransformation <regex> <replacement> - опциональный параметр, представляющий собой регулярное выражение, при нахождении которого в содержимом страницы, будет произведена замена на строку, указанную в параметре <replacement> (пример использования: "-userContentTransformation https http" все строчки, содержащие "https" в HTML-странице, полученной от тестируемого приложения, будут заменены на "http")

Преимущества:

  1. Один раз запустили и работаем
  2. Логи селениум сервера ведутся отдельно

Недостатки:

  1. Постоянно надо проверять запущен ли сервер перед запуском тестов
  2. Селениум Сервер постоянно находится в памяти

2.2 Запуск Selenium Server из кода фреймворка или теста

Если вы пишите ваши тесты на Java, то у Вас есть возможность запускать Selenium Server напрямую из кода. Для этого в package org.openqa.selenium.server есть class SeleniumServer. По умолчанию запуск сервера можно произвести следующим образом:

    SeleniumServer seleniumServer = new SeleniumServer();
    seleniumServer.start();

Если вам понадобятся дополнительные настройки, то необходимо воспользоваться class RemoteControlConfiguration. Создаем объект RemoteControlConfiguration и передаем его в конструктор SeleniumServer:

    RemoteControlConfiguration rcc = new RemoteControlConfiguration();
    // для конфигурации SeleniumServer при необходимости
    // используйте опции RemoteControlConfiguration
    // Например: устанавливаем флаг true для доверия всем SSL сертификатам:
    rcc.setTrustAllSSLCertificates(true);
    SeleniumServer seleniumServer = new SeleniumServer(rcc);
    seleniumServer.start();

Рассмотрим пример Java класса, где прямо из кода мы запустим и сервер и клиент Selenium RC:

public class TestSeleniumRC {
	private Selenium selenium;
	private SeleniumServer seleniumServer;
	public TestSeleniumRC(String browserType, String host) throws Exception {
            RemoteControlConfiguration rcc = new RemoteControlConfiguration();
    	    rcc.setTrustAllSSLCertificates(true);
    	    this.seleniumServer = new SeleniumServer(rcc);
    	    this.selenium = new DefaultSelenium("localhost",
            	4444,
                browserType,
                host);
	}
	public void start() throws Exception {
            seleniumServer.start();
    	    System.out.println("Server is started");
    	    selenium.start();
    	    System.out.println("Client is started");
	}
	public void stop() throws Exception {
            selenium.close();
            selenium.stop();
    	    System.out.println("Client is stopped");
            seleniumServer.stop();
    	    System.out.println("Server is stopped");
	}
	public static void main(String[] args) throws Exception {
            TestSeleniumRC rc = new TestSeleniumRC("*iexplore", "http://www.protesting.ru");
    	    rc.start();
    	    rc.stop();
	}
}

Преимущества:

  1. Сервер автоматически запускается перед стартом тестов и останавливается после их прогона
  2. Возможность параметризации параметров сервера и варьирования их из исходного кода

Недостатки:

  1. При отладке тестов запуск сервера отнимает определенное время, что немного замедляет работу

3 Java опции.

Рассмотрим Java опции актуальные для запуска Selenium Server как из командной строки, так и из кода.

3.1 Java опции необходимые для установки системный свойств

Зачастую, для запуска Selenium Servera, необходимо использовать разные системные настройки java, такие как прокси, кодировки и т.д. [3] Для этого вам придется применить следующие java опции:

Опции установки прокси:

-Dhttp.proxyHost
-Dhttp.proxyPort
-Dhttp.proxyUser
-Dhttp.proxyPassword

Опции установка кодировки файлов:

-Dfile.encoding

Пример командной строки, содержащей все перечисленные параметры:

> java -Dhttp.proxyHost=test.proxy.com -Dhttp.proxyPort=1111 -Dhttp.proxyUser=tester -Dhttp.proxyPassword=testpass -Dfile.encoding=UTF-8 -jar selenium-server.jar

3.2 Java опции для работы с памятью

В случае если Вам понадобится контролировать объем памяти, выделяемый под Selenim Server [4], вы можете воспользоваться следующими опциями:

max heap size
-Xmx
min heap size
-Xms
> java –Xms=128 -Xmx=1024 -jar selenium-server.jar

4 Вывод

Итак, что мы разобрали в данной статье:

  1. Для запуска Selenium Server небходима Java версии не ниже 1.5
  2. Есть два варианта запуска Selenium Server – из командной строки и непосредственно из кода
  3. Параметрами запуска java можно контролировать системные свойства, такие как настройки прокси, кодировок, объем выделяемой памяти и т.д.

5 Литература


Автор: Алексей Булат

Наверх