Раздел: Автоматизация > Практикум > Запуск Selenium Server
Запуск Selenium Server
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:
- из командной строки
- из кода тестов или фреймворка
Оба метода имеют свои плюсы и минусы. Давайте рассмотрим их поближе.
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")
Преимущества:
- Один раз запустили и работаем
- Логи селениум сервера ведутся отдельно
Недостатки:
- Постоянно надо проверять запущен ли сервер перед запуском тестов
- Селениум Сервер постоянно находится в памяти
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(); } }
Преимущества:
- Сервер автоматически запускается перед стартом тестов и останавливается после их прогона
- Возможность параметризации параметров сервера и варьирования их из исходного кода
Недостатки:
- При отладке тестов запуск сервера отнимает определенное время, что немного замедляет работу
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 Вывод
Итак, что мы разобрали в данной статье:
- Для запуска Selenium Server небходима Java версии не ниже 1.5
- Есть два варианта запуска Selenium Server – из командной строки и непосредственно из кода
- Параметрами запуска java можно контролировать системные свойства, такие как настройки прокси, кодировок, объем выделяемой памяти и т.д.
5 Литература
- [1] - Selenium-RC Documentation (http://seleniumhq.org/docs/05_selenium_rc.html)
- [2] - Описание, использование и опции запуска Selenium Server (http://automated-testing.info)
- [3] - Setting the Value of a System Property from the Command Line (http://www.exampledepot.com)
- [4] - Get started with java JVM memory (http://avricot.com/blog/index.php)
- [5] - The Selenium Server – When to Use It (http://seleniumhq.org/docs/03_webdriver.html)
Автор: Алексей Булат