Пишем простейший тест на Selenium IDE. Советы по работе с IDE

Целью данной заметки является знакомство с основными командами Selenium IDE в действии, в результате чего написать простейший тест.

Вспоминаем команды, описанные здесь. Шаги нашего первого теста:
1) Открыть страницу http://bugscatcher.net;
2) Проверить страницу на наличие текста «Bugs Catcher»;
3) Нажать по ссылке «Bugs Catcher»;
4) Проверить наличие элемента на странице для ввода текста поиска;
5) Произвести поиск по тексту «Пишем тесты на Selenium IDE»;
6) Проверить наличие ссылки на станице «Пишем тесты на Selenium IDE».

Автоматизируем данный тест с помощью IDE:
1) Открываем Selenium IDE («FireFox/Tools/Selenium IDE»);
2) Меняем формат записи на HTML. Для этого открываем в IDE «Options/Format» и активируем опцию HTML;
3) Собственно начнем автоматизировать тест. Тут у нас есть несколько вариантов:

  • Активировать запись теста. В данном случае все пользовательские действия в браузере будут записаны, затем их можно будет отредактировать. Для старта теста нужно нажать на кнопку «Record»;
  • Будем писать тест «руками», т.е. заносить все команды сами.

Естественно более удобно использовать первый вариант записи тестов — быстро записать основные действия, а затем только «допилить» тест, добавив проверки и дополнительные шаги. В данном случае будем использовать второй вариант, чтобы лучше разобраться с командами Selenium;
4) IDE предоставляет два вида отображения написанных команд: Table и Source. Удобнее разрабатывать тесты в виде Table, поэтому активируем данный вид отображения, нажав на вкладку Table, которая находится под зелеными кнопками запуска теста;
5) Пробуем добавить новую команду. Нужно выбрать в контекстном меню команду Insert new command;

InsertNewCommand

6) Выбрать первую строку в таблице для занесения команды;
7) Добавляем команду open. Для этого в поле Command (под таблицей команд) выбираем из раскрывающего списка данную команду. В поле Target вводим адрес страницы, которую нужно открыть.
Привожу код автотеста (данный пример приводится с использованием синтаксиса Java, для удобства отображения кода. Однако, данный код переносится и на HTML):

1
2
3
4
5
6
7
8
9
10
11
 
selenium.open("http://bugscatcher.net");   //открытие страницы
selenium.waitForPageToLoad("60000"); //ждем загрузки страницы         
assertTrue(selenium.isTextPresent("Bugs Catcher"));  //проверяем наличие текстового элемента "Bugs Catcher" на странице
selenium.click("link=Bugs Catcher"); //нажимаем на ссылку "Bugs Catcher"
selenium.waitForPageToLoad("60000"); //ждем загрузки страницы    
assertTrue(selenium.isElementPresent("s")); //проверяем, присутствует ли на станице элемент ввода текста для  поиска
selenium.type("s", "Пишем тесты на Selenium IDE"); //вводим в текстовое поле значение "Пишем тесты на Selenium IDE"
selenium.click("searchsubmit");</code>  //нажимаем на кнопку поиска (лупа)
selenium.waitForPageToLoad("30000");  //ждем загрузки страницы
assertTrue(selenium.isElementPresent("link=Пишем тесты на Selenium IDE"));  //проверяем, есть ли на странице результатов ссылка "Пишем тесты на  IDE"
 
selenium.open("http://bugscatcher.net");   //открытие страницы
selenium.waitForPageToLoad("60000"); //ждем загрузки страницы         
assertTrue(selenium.isTextPresent("Bugs Catcher"));  //проверяем наличие текстового элемента "Bugs Catcher" на странице
selenium.click("link=Bugs Catcher"); //нажимаем на ссылку "Bugs Catcher"
selenium.waitForPageToLoad("60000"); //ждем загрузки страницы    
assertTrue(selenium.isElementPresent("s")); //проверяем, присутствует ли на станице элемент ввода текста для  поиска
selenium.type("s", "Пишем тесты на Selenium IDE"); //вводим в текстовое поле значение "Пишем тесты на Selenium IDE"
selenium.click("searchsubmit");</code>  //нажимаем на кнопку поиска (лупа)
selenium.waitForPageToLoad("30000");  //ждем загрузки страницы
assertTrue(selenium.isElementPresent("link=Пишем тесты на Selenium IDE"));  //проверяем, есть ли на странице результатов ссылка "Пишем тесты на  IDE"

Не забывая про синтаксис команд записываем тест в IDE.

Примечание 1. В поле Command работает фильтр по названию команды, т.е. можно вводить имя команды, и вам будут выводится команды начинающиеся на введенное значение. Это значительно ускоряет поиск команд.

Примечание 2. Справа от поля Target есть кнопка Find — с помощью данной кнопки можно проверять локаторы при написании тестов (находит ли Selenium указанный локатор). При нажатии на нее, если элемент на странице найден, — он будет выделятся зеленым цветом, если не найден — то в логе увидите ошибку. Помните, что данная кнопка ищет только локаторы.

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

Примечание 4. При написании тестов можно использовать команды из контекстного меню браузера на проверяемой странице, что значительно ускоряет процесс создания тестов. Например, вы можете выбрать любой элемент страницы, вызвать для него контекстное меню и выбрать доступную команду для данного элемента. Данное действие запишется в тест и затем будет доступно для редактирования.

Menu

Примечание 5. В Log хранятся данные о запуске теста (логирование).

Примечание 6. В Reference предоставляется справочная информация о вызываемой команде.

Примечание 7. Можно устанавливать для команд breakpoint. Смотреть в контекстном меню IDE для выбранной команды (см. изображение — Выбрать команду в контекстном меню ‘Insert New Command’).

Примечание 8. При написании тестов не забываем вставлять комментарии. Для этого в IDE вызываем контекстное меню и выбираем Insert New Comment (см. изображение — Выбрать команду в контекстном меню ‘Insert New Command’). Затем в поле ‘Command’ вносим комментарий к тесту.

Сверяем полученные результаты с данным экраном:

SelIdeCommands

Ну и напоследок два самых распростроненных типа ошибок в «Selenium IDE»:

  • [error] Unknown command: ‘Имя команды’ — в данном случае имя команды введено неверно;
  • [error] locator not found: — в данном случае команда используется верно, но требуемый локатор не был найден.

Удачи в освоении Selenium IDE!