Тестирование с Selenium

Posted on: August 6th, 2011 by Heart 1 Comment »

Selenium IDE

Selenium IDE – это плагин для Firefox, который позволяет записывать действия производимые в браузере, воспроизводить их, а также экспортировать код для: Java, C#, PHP… На странице загрузки можно также загрузить плагины, которые увеличивают удобство использования Selenium IDE на порядок.

Рекомендуемые плагины:

  • Selenium IDE Buttons – кнопки для запуска Selenium. Позволяют запустить IDE в режиме Pop Up (отдельным окном) и Sidebar (cлева в том же окне). Без этих кнопок IDE нужно будет запускать из главного меню. С учетом того, что с 4-ой версии Firefox это меню по умолчанию скрыто, то эти кнопки добавляют удобство в использовании дополнения

  • Highlight Elements – во время “прогона” скрипта, каждое нажатие на элементе страницы будет подсвечиваться желтым цветом. Это очень удобно, особенно когда используешь тесты записанные кем-то другим
  • Power Debugger – если во время “прогона” теста возникает ошибка, плагин перехватывает исключение и приостанавливает выполнение. Строчку скрипта, которая вызвала ошибку можно подправить, после чего нажав на кнопку Power Debugger-а можно продолжить выполнение теста

И еще два плагина, как на мой взгляд менее нужных, но не бесполезных:

  • File Logging – добавляет в IDE возможность записи логов в файл. Логи можно записывать по категориям: Debug, Info, Warn, Error
  • Test Suite Batch Converter – позволяет конвертировать сохраненные в html тесты в код, например PHP

Работа с плагином проста и очевидна, разве что только после записи скрипта, приходится заменять идентификатор кейса на xpath, т.к. по идентификатору name он “ходить” не хочет.

Возможно это у меня глюк. Протестировав интерфейс в браузере, можно переходить к коду. Для этого нужно сделать экспорт нашего кейса. В нашем случае экспорт будем делать в PHPUnit.

Результирующий код на PHP будет выглядеть так:

 

class Example extends PHPUnit_Extensions_SeleniumTestCase
{
  protected function setUp()
  {
    $this->setBrowser("*chrome");
    $this->setBrowserUrl("http://www.google.com.ua/");
  }
 
  public function testMyTestCase()
  {
    $this->open("/");
    $this->click("//input[@name='btnI']");
    $this->waitForPageToLoad("30000");
  }
}

Теперь этот код, в таком виде в каком он есть, можно передавать в PHPUnit.

Selenium Server

 Selenium Server – это HTTP-сервер, написанный на Java который может принимать команды в текстовом виде. Запускаем сервер следующей коммандой:

 

java -jar selenium-server.jar -interactive

После запуска консоль будет выглядеть так:

Теперь серверу можно посылать команды вида:

 

cmd=(Command_Name)&1=(Param_1)&2=(Param_2)...&sessionId=(Our_Session)

Т.к. мы запустили сервер используя параметр -interactive, мы можем посылать команды прямо из консоли. Для примера запустим страницу блога в IE. В консоли пишем:

 

cmd=getNewBrowserSession&1=*iexplore&2=http://acestime.com

На скриншоте видно, что открылось окно сервера и окно Internet Explorer. Для открытия страницы блога, нам нужно выполнить команду “open” и передать идентификатор сессии. Идентификатор сессии можно получить окне Command History.

Выполняем команду:

 

cmd=open&1=http://acestime.com&sessionId=a4176c2675d64f5d93b8672f759507da

О том как все это работает можно почитать тут, на английском.

PHPUnit & Testing_Selenium

Передавать серверу команды из консоли мы конечно же не будем. За нас это будет делать PHPUnit. Для того, чтобы все заработало нам нужно при помощи PEAR-installer-а установить PHPUnit, Testing_Selenium. О том, как это все установить – в другой статье. Предполагается, что PEAR загружен, а также инсталлированы PHPUnit и Testing_Selenium. Теперь, для запуска теста нам нужно передать в PHPUnit имя файла, в который мы экспортировали кейс из Selenium IDE. Допустим, мы экспортировали кейс в файл с названием test.php. Для запуска теста нам нужно выполнить в консоли команду:

 

phpunit test.php

Сервер откроет браузер и выполнит весь скрипт, записанный в Selenium IDE. В код экспортированного скрипта можно добавить свой код, например записать время проведения теста в базу данных или сохранить результаты теста в файл лога.

One Response

  1. Еще одна полезная статья про Selenium: http://plutov.by/post/test_phpunit_selenium

Leave a Reply