Upload
vyacheslavmaslov
View
321
Download
1
Embed Size (px)
Citation preview
Автоматизация тестирования с помощью Selenium
Test Automation
• Автоматизация тестирования нужна для Для установки предусловий для выполнения
тестов
Для выполнения самих тестов
Для сравнения фактического и ожидаемогорезультата
Для формирования отчетности о выполнениитестов
• Обычно, автоматизируют уже созданные тестовыесценарии, которые уже выполняются в ручном режиме врамках какого-либо формализованного процесса
Зачем и когда автоматизировать?
• Частое регрессионное тестирование
• Требуется повторное выполнение теста
• Приемочное тестирование
• Быстрая обратная связь разработке
• Минимизировать человеческий фактор
• Тестирование одного приложения в разных окружениях
Selenium
• Selenium это набор инструментов для быстройразработки автоматических тестов.
• Selenium предоставляет богатый набор функцийкоторые очень хорошо подходят для разработкитестов веб-приложений.
• Selenium команды позволяют удобным способомобрабатывать UI элементы и сравниватьожидаемое поведение приложения сфактическим
Возможности Selenium
• Поддерживает кросс-бразуерное тестирование. Тесты selenium можно запускать во всех современных браузерах
• Поддерживает написание тестовых скриптов на нескольких языках Java, C#, PHP and Python.
• Богатый набор assert- команд для сравнения ожидаемого и фактического результата
• Встроенный механизм отчетности (логи)
SeleniumЭто проект, в рамках которого разрабатывается
серия программных продуктов с открытым
исходным кодом
• Selenium IDE
• Selenium WebDriver
• Selenium RC
• Selenium Server
• Selenium Grid
Selenium RC (Remote Control)
• предыдущая версия библиотеки для управления браузерами
• это средство для «удалённого» управления браузером
• Сейчас находится в законсервированном состоянии, не развивается, известные баги не усправляются
• Иногда Selenium RC называется также Selenium 1.0, а WebDriver называется Selenium 2.0
Selenium WebDriver
•программная библиотека для
управления браузерами
•основной продукт, разрабатываемый в
рамках проекта Selenium
•это целое семейство драйверов для
различных браузеров, а также набор
клиентских библиотек на разных языках,
позволяющих работать с этими
драйверами
Selenium WebDriver
Selenium Server
• сервер, который позволяет управлять браузером с удалённой машины, по сети
• поддерживает одновременно два набора команд – для новой версии (WebDriver) и для старой версии (Selenium RC)
Selenium Grid• кластер, состоящий из нескольких Selenium-
серверов
• предназначен для организации распределённой сети, позволяющей параллельно запускать много браузеров на большом количестве машин
• Ранее Selenium Grid был самостоятельным продуктом. Сейчас продукт один - Selenium Server, но у него есть несколько режимов запуска: он может работать как самостоятельный сервер, как коммутатор кластера, либо как узел кластера, это определяется параметрами запуска.
Selenium IDE• Selenium IDE это среда разработки для
тестов• Реализована расширением для Firefox и
позволяет записывать, редактировать ивоспроизводить тесты
• Selenium IDE умеет сохранять тесты вформате HTML, Java, Ruby scripts, и ещёнескольких
• Позволяет автоматически добавлятьassertions
• Позволяет добавлять команды когда и кудатребуется
14
Selenium IDE - UI
Start/Stop записи
Редактор теста
Лог выполнения
Язык команд Selenium
• Язык Selenium – это набор команд, которые составляют ваши тесты.
• Последовательность таких команд называется тестовый сценарий.
• Набор команд Selenium часто называют selenese, то есть селенийским языком.
• Команды Selenium бывают трех видов: Действия (Actions), Считыватели(Accessors) и Проверки (Assertions).
Основные команды Selenese
Переход по ссылкам – click,clickAndWait
Ввод значений - type
Выбор значений из выпадающих списков – select
Проверка ожидаемых результатов verify/assert
Команды условного ожидания – wait*
Синтаксис языка команд Selenium
• Command – имя команды
• Target – локатор элемента цели команды
• Value – входное значение для команды
http://release.seleniumhq.org/selenium-core/1.0.1/reference.html
Команды Selenium
• Действия - команды, которые обычно управляют состоянием приложения. Они совершают действия вроде “щелкнуть по той ссылке” или “выбрать эту опцию”.
• Считыватели - анализируют состояние приложения и сохраняют результаты в переменные
• Проверки - проверяют соответствие состояния приложения ожидаемому.
Пример структуры html документа (dom tree)
Локатор – это строка которая однозначноидентифицирует элемент интерфеса (UI элемент)
• id=login• name=password• link=Найти• xpath=(//button[@type='submit'])[2]• css=a.ra-search-form-currency-link > span
Нахождение по “id”• Данный тип локатора является точным.
Используется, когда известно значение атрибута “id” элемента
Нахождение по “name”• ищет первый элемент с соответствующим запросу атрибутом
“name”. Если у нескольких элементов одинаковое значение атрибута “name”, то тогда можно использовать фильтры, чтобы отсеять ненужные результаты. Тип фильтра по умолчанию – это значение атрибута “value”.
Нахождение гиперссылок по тексту ссылки
• Используя метод поиска по тексту ссылки, находить гиперссылки на веб-странице довольно легко. Если на странице присутствуют две ссылки с одинаковым текстом, то будет использовано первое совпадение.
Нахождение с помощью XPath• XPath – это язык, который используется для
нахождения элементов в XML документах.
• Одна из главных причин использования XPath –это отсутствие подходящего атрибута “id” или “name” для элемента, который нужно найти.
• Абсолютное выражение содержит в себе путь XPath начиная от корневого элемента (html), поэтому при малейшем изменении в приложении высока вероятность сбоя.
Нахождение с помощью XPath
Нахождение с помощью CSS• CSS (Cascading Style Sheets, каскадные таблицы стилей) – это
язык, используемый для описания правил визуализации HTML и XML документов. Для привязки стилей к элементам документа, в CSS используются селекторы. Эти селекторы могут быть использованы Selenium в качестве еще одного метода поиска.
Добавление assertions в тест
• Selenese позволяет проверять UI элементы разными способами
• Команды verify/assert используются для Проверки наличия UI элемента на странице
Проверки наличия текста на странице
Проверки состояния UI элемента
• Если не выполняется условие assert весь тест проваливается, если не выполняется verify фиксируется ошибка в лог и тест продолжает выполнение
30
Команды verifyverifyTextPresent
Использутсядля проверки
наличия текста на странице.
Добавить можно из
контекстного меню в
браузере
Команды verify
verifyTitle Позволяет проверить title
страницы.
Добавить можно также изконтекстного меню браузера
Команды verify
verifyElementPresent Провряет наличие конкретного
UI элемента на странице(кнопка, ссылка, поле ввода,итд)
Можно добавить изконтекстного менюбраузера,непосредственно «встав»на элемент и вызвавконтекстное меню
Assertions
• Команды assert работают аналогично командам verify. Единственное и важное отличие, если assert не выполняется, то прерывается весь тест и помечается как fail. Если не выполняется verify то тест продолжает работу, записывается ошибка в лог.
Assertion
assertTextPresentПроверяет наличие текста
assertTextПроверяет наличие текста у какого-либо UI элемента.
assertTitleПроверяет корректность заголовка страницы
assertValueПроверяет значение у поля ввода
assertElementPresentПроверяет наличие элемента на странице
WaitFor команды
waitForPageToLoadЖдет полной загрузки страницы
Синтаксис waitForPageToLoad(timeout); timeout –максимальное время ожидания
WaitFor команды
waitForAlertКоманда ждет появление всплывающего окошка с сообщением
waitForTableЖдет полной загрузки таблицы
waitForTitleЖдет появления страницы с нужным заголовком
waitForTextЖдет появления текста на странице