Selenium IDE / RC как подключить user-extensions.js

User extensions – это набор пользовательских JS команд (не обязательно команд), которые позволяют расширить стандартную функциональность Selenium IDE. Существует достаточно большое количество уже готовых, разработанных другими пользователями, расширений для Selenium IDE. Также можно самостоятельно написать и использовать свое собственное дополнение к Selenium. Про самое полезное и наиболее используемое расширение для Selenium IDE – FlowControl я рассказал в своей предыдущей заметке. Наиболее известные расширения для Selenium можно найти тут.

Остается открытым вопрос – как добавить user-extensions к Selenium IDE?

Открываем Selenium IDE, затем переходим в опции: “Selenium-IDE’s Options=>Options=>General tab”. После этого в поле “Selenium Core extensions” нужно указать требуемое вам расширение ( местоположение файла на диске). После этого требуется перегрузить (закрыть, затем открыть) Selenium IDE. После этих не хитрых операций вы можете смело использовать дополнительный функционал при создании тестов. В списке команд должны появится дополнительные наборы команд (тут уже зависит от конкретного расширения).

Что такое user-extensions и как его использовать в Selenium IDE я показать в своей предыдущей заметке. В этой заметке я постараюсь рассказать как подключить файл user-extensions к Selenium RC.

 Итак шаги, которые необходимо выполнить:

  • Первым делом нужно ваш файл user extension разместить в одной директории с Selenium Server.
  • В ваш класс инициализации Selenium Server-а требуется объявить объект HttpCommandProcessor:

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }HttpCommandProcessor proc;{/syntaxhighlighter}

  • Далее создаем новый экземпляр класса HttpCommandProcessor:

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }proc = new HttpCommandProcessor("localhost", 4444, "*iexplore", "http://google.ca/");{/syntaxhighlighter}

  • Декларируем переменную:

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }selenium = new DefaultSelenium(proc);{/syntaxhighlighter}

  • Вызов метода из user-extensions.js.

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }string[] inputParams = {"Hello World"}; proc.DoCommand("alertWrapper", inputParams);{/syntaxhighlighter}

В параметрах proc.DoCommand("alertWrapper", inputParams) указанны: “alertWrapper” – название команды, inputParams – параметры вызываемого метода.

  • Запустить Selenium Server с параметром -userExtensions. Пример:

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }java -jar selenium-server.jar -userExtensions user-extensions.js{/syntaxhighlighter}

Пример использования и более подробную информацию можно получить на официальном сайте Selenium.

Для более удобного и красивого построения тестов рекомендую сделать метод-обертку, который будет обеспечивать вызов команд из userExtensions. Пример реализации:

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; } public void Command(string name, params string[] inputParams) { this.processor.DoCommand(name, inputParams); }{/syntaxhighlighter}

Тогда вызов Command будет выглядеть примерно так:

{syntaxhighlighter brush: bash;fontsize: 100; first-line: 1; }StateS.GetTestState().Command("telerikComboBoxSelect", dropDown.Constraint.ToLocator(), item);{/syntaxhighlighter}