t.me/atinfo_chat Telegram группа по автоматизации тестирования

Selenium Core. Практика.


(Mykhailo Poliarush) #1

Для того, что бы хорошо понять, как устроен Selenium сам по себе, нужно хорошо попрактиковаться с Selenium Core. Как говориться, лучше понять несколько принципов, нежели запоминать несколько десятков фактов. Ну что, готовы, тогда начнем!

Заметка: В этом уроке мы будем практиковаться с Selenium Core, потому необходимо понимать, что это такое. Так как это практика, а не теория, то тут будут отображены только фактические шаги, которые нужно воспроизвести.

Что будем тестировать

Для тестирования нам необходимо, какая-то программа, которая бы имела маленький веб-сервер. Для чего нужен веб-сервер? Selenium Core – это JavaScript / DHTML фреймворк, который имеет свои ограничения JavaScript-а. Например, JavaScript не может обратиться с одного сайта на другой, потому как существуют ограничения по безопасности, которые не позволяют этого сделать. Из-за этого нужно будет заливать тесты на веб-сервер, где крутиться веб-приложение.

Честно говоря, долго думать не пришлось. Я уже давно практикую GTD (Getting things done) в своей жизни и соответственно использую программы, которые помогают мне в этом. Вот одна из них. Она называется What Is Next?, написанная на Ruby on Rails. Эта программа имеет веб-сервер. Именно то, что нам и нужно.

Устанавливаем все необходимое

  1. Скачиваем WhatIsNext c Rubi Runtime.
  2. Распаковать архив в C:\Program Files\whats_next\
  3. Переходим к директории, где хранятся веб-приложения. C:\Program Files\whats_next\public
  4. Создаем директорию для тестов  в C:\Program Files\whats_next\public\testing
  5. Скачиваем Selenim Core
  6. Распаковать архив в C:\Program Files\whats_next\public\testing

Заметка: я описываю все как сделано у меня. Вы вольны в своем выборе и можете сделать все по-другому, если хотите конечно.

Делаем проверку

Что бы удостовериться, что все работает нормально нужно проверить, что:

  1. Тестируемое приложение запускается
    1. Переходим в C:\Program Files\whats_next\ и запускаем start.cmd
    2. Открыть браузер и загрузить страницу http://localhost:3300 
    3. Попробовать, что-то добавить / изменить / удалить
    4. Все должно работать.
  2. Тесты запускаются через веб-сервер
    1. В стандартном архиве Selenium Core идут примеры, которые уже можно запускать. Что мы и сделаем
    2. Открыть браузер и загрузить страницу http://localhost:5000/testing/index.html
    3. Нажать на ссылочку Selenium TestRunner
    4. Запустить тесты на выполнение. Нажать кнопку GO, а следом Run All tests
    5. Тесты должны пройти. Обычно они проходят успешно. Если это не так, то честно говоря не страшно.

План действий

  • Необходимо придумать какой-то тест, который нужно автоматизировать
  • Создать Selenium тестовый набор
  • Необходимо создать пустой Selenium тест и включить его в тестовый набор
  • Залить все существующие файлы на веб-сервер
  • Выполнить автоматизацию теста
  • Стартовать веб-сервер, запустить тест и сделать отладку

Все предельно просто и понятно. Если понятно, то приступим! Если нет, то нужно перечитать еще раз и хорошенько подумать. Будут вопросы, то пишите комментарии.

Придумываем ручной тест для автоматизации

Тест: Создать и проверить новое действие

  1. Шаг: Нажать "New Action". Ожидаемый результат: Окно для создания нового действия открыто
  2. Шаг: Выбрать состояния в поле "Status". Тестовые данные: Current. Ожидаемый результат: "Current" состояние выбрано и показывается
  3. Шаг: Написать название действия. Тестовые данные: Write post to my blog. Ожидаемый результат: Название действия отображается в "Action" поле
  4. Шаг: Установить значение "Due date". Тестовые данные: tomorrow. Ожидаемый результат: должна отобразиться текущая дата
  5. Шаг: Установить данное действие как первое. Ожидаемый результат: Поле отмечено
  6. Шаг: Нажать кнопку "Save". Ожидаемый результат: Окно создания нового действия закрыто
  7. Шаг: Проверить действие в текущем списке. Ожидаемый результат: Действие присутствует в списке действий
  8. Шаг: Проверить, что действие находится в начале списка. Ожидаемый результат: Действие находится в начале списка
  9. Шаг: Проверить название действия. Ожидаемый результат: Название действия соответствует "Write post to my blog"

Selenium Core выполнение и результаты

Создаем Selenium Core тестовый набор

В Selenium Core тесты выглядят, как обычный HTML с таблицами. Потому, если у вас есть знания HTML, то это будет только плюс, а если нету, то необходимо заглянуть www.w3schools.com и www.w3.org.

  1. Создаем файл suite.html
  2. В suite.html прописываем таблицу в, которой указываем ссылку на наш будущий тест
  3. Сохраняем файл.

suite.html

Test Suite

Test Suite
Create new action

Создаем пустой Selenium тест

Тут тоже все очень просто.

  1. Создаем вышеупомянутый файл test.html 
  2. В test.html прописываем таблицу состоящая из трех колонок
  3. Сохраняем файл.

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
  • Запустить тест можно несколькими способами
  • Собственно отладка теста происходит следующим образом. Запускаете тест, смотрите на каком шаге падает тест, пытаетесь понять и исправить ошибку, перезапускаете тест.

(Mike) #2

Для Selenium port=5000 (место в тексте: "открыть браузер и загрузить страницу http://localhost:5000/testing/index.html" ), а для Whats_next - 3300. Это опечатка (или я чего-то не поинмаю)?



(Mykhailo Poliarush) #3

Да, опечатка, должно быть 3300 порт.
Вообщем в whats_next приложении есть настройке по порту использования. Собстветвенно, как вы его настроите, такой и используйте.


(blackVelvet) #4

Танцы с бубном не помогают: 1) страница с программкой не находится; 2) поиск в инете не дает положительных результатов, т.к. неизвестен производитель этого ПО, а также потому что поиск "what's next" в гугле возвращает 14,700,000 записей, не имеющих отношения к данному топику. Плиз хелп.


(blackVelvet) #5

Нашлась рабочая ссылка для What's Next. http://muermann.org/download.html


(Mykhailo Poliarush) #6

да, сайт производителя ПО переехал.
но так как сайт нашелся, то Эврика! :)


(astafev) #7

Как уважающий себя тестировщик, не могу не заметить:

Во-первых непонятно, где и как искать дистрибутив Core? Если раньше и был отдельны продукт Core, то щас его нет. Если нужно скачивать selenium-server-standaone, то так и надо написать.

2. Открыть браузер и загрузить страницу http://localhost:5000/testing/index.html

3. Нажать на ссылочку Selenium TestRunner

2-й шаг не нужен, ибо неверен, такого файла нет (даже если порт правильный указать)

+ тест валится в IE.

Немного оффтоп: у меня тоже иногда возникают проблемы с IE с тестами, работающими в других браузерах. Вы, случайно, не знаете в чем проблема и как она лечится?


(Mykhailo Poliarush) #8

Очень уважаю уважающих себя тестировщиков, которые не проходят мимо и рассказывают о ошибках. 

А теперь по деталях статья была написана еще в 2009 году, за это время с селениумом столько изменилось, что в новой версии вообще Selenium Core нету.

где и как искать дистрибутив Core? - нигде
2-й шаг не нужен, ибо неверен, такого файла нет (даже если порт правильный указать) - этот пункт был касательно Selenium Core

 Немного оффтоп: у меня тоже иногда возникают проблемы с IE с тестами, работающими в других браузерах. Вы, случайно, не знаете в чем проблема и как она лечится? - причины всегда разные, тут надо смотреть отдельно, создавайте тему на http://automated-testing.info/forum с деталями и там разберемся


(astafev) #9

В архиве selenium server-standalone есть папочка Core, которую можно и достать и следуя вашему алгоритму с некоторыми ухищрениями (он берет только testSuite и только из своей папки) все сделать и посмотреть как оно замечательно работает.
Вот только стоит ли? Вот что пишут в офф. документации:
“The TestRunner is not commonly used now and is likely to be deprecated.”


(Mykhailo Poliarush) #10

да, если распокавать jar файл, там можно найти, его там оставили, потому что есть проекты, где это еще используется.

но вот действительно, нужно ли?! Мой ответ - НЕТ. Смотрите в сторону Selenium IDE и webdriver, если мы говорим о Selenium.

 


(donna) #11

Ув. Михаил,

так может вы внесете изменения в вашу статью с учетом всех комментов и того, что уже не 2009 год?


(Mykhailo Poliarush) #12

Я бы с радостью, только вот материала очень много, которого надо поддерживать, а вот я один :)

Похорошему надо вообще переписать статью, так как много чего изменилось, потому получается новая статья.

Как будет время напишу, поставил себе в задачи.


(mamax) #13

http://muermann.org/download.html
нерабочая ссылка


(Mykhailo Poliarush) #14

приложение уже официально не поддерживается

потому сайт и не доступен :(

жаль хотя было хорошее приложение, по крайней для практики