Для того, что бы хорошо понять, как устроен Selenium сам по себе, нужно хорошо попрактиковаться с Selenium Core. Как говориться, лучше понять несколько принципов, нежели запоминать несколько десятков фактов. Ну что, готовы, тогда начнем!
Заметка: В этом уроке мы будем практиковаться с Selenium Core, потому необходимо понимать, что это такое. Так как это практика, а не теория, то тут будут отображены только фактические шаги, которые нужно воспроизвести.
Что будем тестировать
Для тестирования нам необходимо, какая-то программа, которая бы имела маленький веб-сервер. Для чего нужен веб-сервер? Selenium Core – это JavaScript / DHTML фреймворк, который имеет свои ограничения JavaScript-а. Например, JavaScript не может обратиться с одного сайта на другой, потому как существуют ограничения по безопасности, которые не позволяют этого сделать. Из-за этого нужно будет заливать тесты на веб-сервер, где крутиться веб-приложение.
Честно говоря, долго думать не пришлось. Я уже давно практикую GTD (Getting things done) в своей жизни и соответственно использую программы, которые помогают мне в этом. Вот одна из них. Она называется What Is Next?, написанная на Ruby on Rails. Эта программа имеет веб-сервер. Именно то, что нам и нужно.
Устанавливаем все необходимое
- Скачиваем WhatIsNext c Rubi Runtime.
- Распаковать архив в C:\Program Files\whats_next\
- Переходим к директории, где хранятся веб-приложения. C:\Program Files\whats_next\public
- Создаем директорию для тестов в C:\Program Files\whats_next\public\testing
- Скачиваем Selenim Core
- Распаковать архив в C:\Program Files\whats_next\public\testing
Заметка: я описываю все как сделано у меня. Вы вольны в своем выборе и можете сделать все по-другому, если хотите конечно.
Делаем проверку
Что бы удостовериться, что все работает нормально нужно проверить, что:
-
Тестируемое приложение запускается
- Переходим в C:\Program Files\whats_next\ и запускаем start.cmd
- Открыть браузер и загрузить страницу http://localhost:3300
- Попробовать, что-то добавить / изменить / удалить
- Все должно работать.
-
Тесты запускаются через веб-сервер
- В стандартном архиве Selenium Core идут примеры, которые уже можно запускать. Что мы и сделаем
- Открыть браузер и загрузить страницу http://localhost:5000/testing/index.html
- Нажать на ссылочку Selenium TestRunner
- Запустить тесты на выполнение. Нажать кнопку GO, а следом Run All tests
- Тесты должны пройти. Обычно они проходят успешно. Если это не так, то честно говоря не страшно.
План действий
- Необходимо придумать какой-то тест, который нужно автоматизировать
- Создать Selenium тестовый набор
- Необходимо создать пустой Selenium тест и включить его в тестовый набор
- Залить все существующие файлы на веб-сервер
- Выполнить автоматизацию теста
- Стартовать веб-сервер, запустить тест и сделать отладку
Все предельно просто и понятно. Если понятно, то приступим! Если нет, то нужно перечитать еще раз и хорошенько подумать. Будут вопросы, то пишите комментарии.
Придумываем ручной тест для автоматизации
Тест: Создать и проверить новое действие
- Шаг: Нажать "New Action". Ожидаемый результат: Окно для создания нового действия открыто
- Шаг: Выбрать состояния в поле "Status". Тестовые данные: Current. Ожидаемый результат: "Current" состояние выбрано и показывается
- Шаг: Написать название действия. Тестовые данные: Write post to my blog. Ожидаемый результат: Название действия отображается в "Action" поле
- Шаг: Установить значение "Due date". Тестовые данные: tomorrow. Ожидаемый результат: должна отобразиться текущая дата
- Шаг: Установить данное действие как первое. Ожидаемый результат: Поле отмечено
- Шаг: Нажать кнопку "Save". Ожидаемый результат: Окно создания нового действия закрыто
- Шаг: Проверить действие в текущем списке. Ожидаемый результат: Действие присутствует в списке действий
- Шаг: Проверить, что действие находится в начале списка. Ожидаемый результат: Действие находится в начале списка
- Шаг: Проверить название действия. Ожидаемый результат: Название действия соответствует "Write post to my blog"
Создаем Selenium Core тестовый набор
В Selenium Core тесты выглядят, как обычный HTML с таблицами. Потому, если у вас есть знания HTML, то это будет только плюс, а если нету, то необходимо заглянуть www.w3schools.com и www.w3.org.
- Создаем файл suite.html
- В suite.html прописываем таблицу в, которой указываем ссылку на наш будущий тест
- Сохраняем файл.
suite.html
Test Suite
Test Suite |
Create new action |
Создаем пустой Selenium тест
Тут тоже все очень просто.
- Создаем вышеупомянутый файл test.html
- В test.html прописываем таблицу состоящая из трех колонок
- Сохраняем файл.
test.html
Empty Test
open | http://localhost:3300/ |
Копируем файлы на веб-сервер
Как уже было сказано выше, необходимо скопировать созданные файлы на веб-сервер. А именно в директорию, где хранятся автоматические тесты Selenim Core. C:\Program Files\whats_next\public\testing\
Выполняем автоматизацию теста
Create New Action Test Case
open | http://localhost:3300/ | |
waitForTitle | ?hat*Next* | |
click | link=New Action | |
waitForElementPresent | id=window_dialog_new_action | |
assertElementPresent | //div[@id="window_dialog_new_action"] | |
verifyXpathCount | //select[@id="next_action_status"]/* | 4 |
select | next_action_status | label=Waiting |
verifyNotSelectedLabel | id=next_action_status | Current |
select | identifier=next_action_status | Current |
assertSelectedLabel | next_action_status | Current |
assertElementPresent | next_action_name | |
type | next_action_name | Write post to my blog |
assertElementPresent | next_action_due | |
type | next_action_due | tomorrow |
assertElementPresent | move_to_top | |
click | move_to_top | |
assertElementPresent | create_next_action_btn | |
click | create_next_action_btn | |
waitForNotElementPresent | window_dialog_new_action | |
assertElementPresent | //span[text()="Write post to my blog"] | |
storeValue | //ul[@id='action_list_sortable_current']/li[./*/*/*/*/*/*/span/text()="Write post to my blog"]/@id | new_action_id |
echo | ${new_action_id} | |
verifyValue | //ul[@id='action_list_sortable_current']/li[position()=1]/@id | ${new_action_id} |
verifyText | //span/span[ancestor::*[@id="${new_action_id}"] and @id]/text() | Write post to my blog |
verifyText | //span/span[ancestor::*[@id="${new_action_id}"] and not(@id)]/text() | regexp:.*[0-9]*.* |
storeEval | var str="${new_action_id}";str.split("_")[2]; | action_id |
verifyXpathCount | //a[ancestor::*[@id="upcoming_list"] and @href="http://localhost:3300/next_actions/${action_id}"] | 1 |
Стартуем веб-сервер, запускаем тест и делаем отладку
- Для того, чтобы стартовать веб-сервер (если он уже не запущен), необходимо сделать следуещее. Перейти в C:\Program Files\whats_next\ и запустить start.cmd
- Запустить тест можно несколькими способами
- через строку ввода URL, ввести следующее http://localhost:3300/testing/core/TestRunner.html?test=../suite1.html&resultsUrl=../postResults
- запустить страницу http://localhost:3300/testing/core/TestRunner.html отвечающуюю за запуск тестов. В поле Test Suite: ввести следующий путь ../suite.html
- Собственно отладка теста происходит следующим образом. Запускаете тест, смотрите на каком шаге падает тест, пытаетесь понять и исправить ошибку, перезапускаете тест.