Selenium Core. Практика.
Опубликовано polusok в 12.08.2009
Для того, что бы хорошо понять, как устроен 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
Create new action
Создаем пустой Selenium тест
Тут тоже все очень просто.
- Создаем вышеупомянутый файл test.html
- В test.html прописываем таблицу состоящая из трех колонок
- Сохраняем файл.
test.html
open
http://localhost:3300/
Копируем файлы на веб-сервер
Как уже было сказано выше, необходимо скопировать созданные файлы на веб-сервер. А именно в директорию, где хранятся автоматические тесты Selenim Core. C:\Program Files\whats_next\public\testing\
Выполняем автоматизацию теста
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
- Собственно отладка теста происходит следующим образом. Запускаете тест, смотрите на каком шаге падает тест, пытаетесь понять и исправить ошибку, перезапускаете тест.
Уровень подготовки:
Начальный
»
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии










localhost:5000 и localhost:3300 - опечатка?
Для Selenium port=5000 (место в тексте: "открыть браузер и загрузить страницу http://localhost:5000/testing/index.html" ), а для Whats_next - 3300. Это опечатка (или я чего-то не поинмаю)?
Да, должен быть 3300 порт
Да, опечатка, должно быть 3300 порт.
Вообщем в whats_next приложении есть настройке по порту использования. Собстветвенно, как вы его настроите, такой и используйте.
------------------------------------------------------
Жизнь прекрасна, когда ты искренне радуешься жизни. :)
Миша Поляруш
Автор www.automated-testing.info и www.poliarush.com
http://whatsnextapp.com/ нерабочая ссылка
Танцы с бубном не помогают: 1) страница с программкой не находится; 2) поиск в инете не дает положительных результатов, т.к. неизвестен производитель этого ПО, а также потому что поиск "what's next" в гугле возвращает 14,700,000 записей, не имеющих отношения к данному топику. Плиз хелп.
Эврика!
Нашлась рабочая ссылка для What's Next. http://muermann.org/download.html
да, сайт производителя ПО переехал.
да, сайт производителя ПО переехал.
но так как сайт нашелся, то Эврика! :)
------------------------------------------------------
Жизнь прекрасна, когда ты искренне радуешься жизни. :)
Миша Поляруш
Автор www.automated-testing.info и www.poliarush.com
непоняяятно
Как уважающий себя тестировщик, не могу не заметить:
Во-первых непонятно, где и как искать дистрибутив Core? Если раньше и был отдельны продукт Core, то щас его нет. Если нужно скачивать selenium-server-standaone, то так и надо написать.
2-й шаг не нужен, ибо неверен, такого файла нет (даже если порт правильный указать)
+ тест валится в IE.
Немного оффтоп: у меня тоже иногда возникают проблемы с IE с тестами, работающими в других браузерах. Вы, случайно, не знаете в чем проблема и как она лечится?
Очень уважаю уважающих себя тестировщиков
Очень уважаю уважающих себя тестировщиков, которые не проходят мимо и рассказывают о ошибках.
А теперь по деталях статья была написана еще в 2009 году, за это время с селениумом столько изменилось, что в новой версии вообще Selenium Core нету.
где и как искать дистрибутив Core? - нигде
2-й шаг не нужен, ибо неверен, такого файла нет (даже если порт правильный указать) - этот пункт был касательно Selenium Core
Немного оффтоп: у меня тоже иногда возникают проблемы с IE с тестами, работающими в других браузерах. Вы, случайно, не знаете в чем проблема и как она лечится? - причины всегда разные, тут надо смотреть отдельно, создавайте тему на http://automated-testing.info/forum с деталями и там разберемся
------------------------------------------------------
Жизнь прекрасна, когда ты искренне радуешься жизни. :)
Миша Поляруш
Автор www.automated-testing.info и www.poliarush.com
и все-таки Core можно найти!
да, если распокавать jar файл, там можно найти
да, если распокавать jar файл, там можно найти, его там оставили, потому что есть проекты, где это еще используется.
но вот действительно, нужно ли?! Мой ответ - НЕТ. Смотрите в сторону Selenium IDE и webdriver, если мы говорим о Selenium.
------------------------------------------------------
Жизнь прекрасна, когда ты искренне радуешься жизни. :)
Миша Поляруш
Автор www.automated-testing.info и www.poliarush.com
изменения
Ув. Михаил,
так может вы внесете изменения в вашу статью с учетом всех комментов и того, что уже не 2009 год?
потому получается новая статья
Я бы с радостью, только вот материала очень много, которого надо поддерживать, а вот я один :)
Похорошему надо вообще переписать статью, так как много чего изменилось, потому получается новая статья.
Как будет время напишу, поставил себе в задачи.
------------------------------------------------------
Жизнь прекрасна, когда ты искренне радуешься жизни. :)
Миша Поляруш
Автор www.automated-testing.info и www.poliarush.com