Разное

Selenium тестирование: Нагрузочное тестирование с помощью Selenium / Хабр

Содержание

Автоматические приемочные тесты с Selenium

Как использовать инструментальные средства теста Selenium для функционального тестирования Ruby на Rails и приложения Ajax

Крестьян Хелстен
Опубликовано 08.06.2007

Приемочные тесты web приложений обычно включают неавтоматические задачи открытия браузера и выполнение действий, описанных в test case. Вручную выполненные задачи занимает много времени и имеет большую вероятность ошибки оператора. Поэтому, автоматизация этих задач (где это только возможно), поможет исключить человеческий фактор. Именно здесь и появляется необходимость в проверочных инструментальных средствах подобных Selenium. Selenium поможет автоматизировать ваши приемочные тесты и создать лучше испытанное и, следовательно, более надежное и удобное для обслуживания программное обеспечение.

Приемочное тестирование, также известное как тестирование методом черного ящика или функциональное тестирование, это способ проверки и контроля за тем, чтобы работа приложения отвечала функциональным, нефункциональным и другим важным требованиям. Приемочные тесты дополняют блочные и комплексные тесты, которые, как правило, написаны с использованием структуры xUnit. Также, приемочные тесты можно записать, используя язык программирования. Однако, Selenium и похожие инструментальные средства типа Fitnesse, также поддерживают тесты, написанные с использованием формата документа с опр

Тестируем web-приложения с помощью Selenium RC

Знакомимся с Selenium Remote Control

Натан Гуд
Опубликовано 26.08.2011

Инфраструктуры модульного тестирования, такие как JUnit, позволяют тестировать код, выполняемый на серверной стороне. Однако в типичном Web-приложении серверный код является лишь малой частью всего кода приложения. В таких приложениях может быть много кода, который можно протестировать только с помощью инструмента, работающего с браузером.

Одним из наиболее сложных аспектов тестирования web-приложений является тестирование части кода приложения, относящейся к пользовательскому интерфейсу, которая, как правило, генерируется из HTML и JavaScript-кода. Этот код выполняется в браузере, а не в процессе сервера, поэтому его можно проверить только с помощью браузера. Примерами такого кода являются страницы JavaServer Pages (JSP), код PHP и Ruby.

В этой статье вы познакомитесь с инструментом Selenium, с помощью которого можно создавать и автоматизировать тесты web-приложений. Вы узнаете, как быстро создавать примеры тестов, расширять их, и как с помощью Selenium Remote Control запускать их в виде автоматических тестов.

Знакомимся с Selenium RC

Selenium RC является частью набора инструментов, имеющихся в проекте Selenium. С его помощью можно автоматически запускать созданные тесты. Selenium RC работает на многих операционных системах и с разными браузерами, в том числе с Windows® Internet Explorer®, Mozilla Firefox и Opera.

Используя Selenium RC, можно автоматически выполнять тесты сколько угодно раз. Кроме того, этот инструмент позволяет создавать более сложные тесты, чем те, которые можно делать в Selenium IDE. В тесты можно добавлять инструкции у

Сказ о Selenium тестировании / Хабр

Когда перед вашей командой стоит задача написать действительно крупный проект, всегда становится задача тестировать написанный код. Если сервер тестировать относительно легко, то JS код чаще всего тестировать просто невозможно в связи с его природой.

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

А поговорим о следующем:

  1. Архитектура тестов
  2. Запуск тестов
  3. Кодовая база
  4. Таймауты
  5. Взаимодействие кода тестов и браузера.
  6. Разные среды исполнения
  7. Баги драйверов и самого селениума

Данная статья больше ориентирована на новичков, чем на профессионалов.

Архитектура тестов

Часто встает вопрос, как спроектировать тесты, чтоб сократить написание кода и не заниматься копипастом. Обычно используются generic файлы, которые наследуют unitTest класс вашего языка. У нас всегда есть возможность изменить поведение для какой-то группы тестов, не затрагивая другие группы. К примеру:

unittest.py
seleniun/
  - generic.py
  menu/
    - generic.py
    - menuActionTest.py
    - menuDisableTest.py
  articles/
    - generic.py
    - articlesLoadTest.py
    - articlesActionsTest.py

Когда вы отделяете функционал по категориям, выносите его в директории, а в каждой директории создавайте свой generic. Каждый тест должен наследовать класс generic с которым он лежит в директории. Generic может быть даже пустым, в будущем он пригодится, даю гарантию.

Запуск тестов

Разница между юнит тестами и приемочными тестами заключается, что в unittest обычно тестируют алгоритмы и логику, а приемочные уже тестируют саму систему, с реальными данными, которые получают из работающей БД.

База данных

Задача всех тестов, быть изолированными друг от друга. А значит на каждый запуск теста, нужно создавать новую тестовую БД. У каждого unittest функционала языка есть метод setUp, который вызывается перед запуском теста. Попробуйте в нем изменить настройки до иницилизации базы данных. Так вы сможете полностью изолироваться от других тестов и существующих данных, а если вы еще используете механизмы кэширования, очистите кэш или воспользуйтесь пустым хранилищем кэша как и с БД.

Фикстуры

По сути, это данные которые будут записаны в вашу тестовую БД, для того чтоб браузер открыл сайт и не получил ошибок. Базовые данные стоит записать в setUp методе главного generic`a. А остальные записывать по мере потребностей данных в самих тестах.

Сохранение данных базы

Создайте путь для возможного дебага, часто бывает так, что тесты по не понятной причине глохнут с ошибкой, часто бывает что нужно сохранить базу и оставить браузер в живых. Возможно вам и sleep подойдет? Если вы сделали функционал сохранения базы, сделайте так-же функционал очистки старых баз. У меня к примеру mongoDB смог за неделю разработки создать 80гб баз данных.

Передача подключения

Когда открывается браузер, запомните, он никак не связан с вашим тестом. Если селениум просто откроет браузер и начнет выполнять операции, скорее всего он будет выполнять их над существующим проектом. Передайте в браузер параметры, которые помогут идентифицировать нужную тестовую базу. В свое время, браузер должен будет передать информацию на сервер.

Кодовая база

Вот тут вам нужно будет сесть и подумать, как сделать для самого себя жизнь прекрасней.
К примеру, у вас асинхронное многопользовательское real time приложение(игра), нужно писать тесты где могут взаимодействовать два и более пользователей. Посмотрите, будет ли вам удобно переключатся между окнами браузера с помощью драйвера? Нет, напишите свою простую реализацию.

Нужно собственные assert`ы? К примеру проверить существование элемента в дереве?

Вполне вероятно, что у вашего проекта есть свои особенности и нужно подготовить некоторую функциоальную часть тестов для этого.

Таймауты

Всегда при тестировании, нам нужно будет выполнять таймауты. Толи это будет загрузка страницы, ajax или socket запрос на сервер. С загрузкой страницы драйвера содержат встроенный метод для ожидания. Но вот с ajax и socket запросами всё сложнее. Вам нужно будет написать счетчик отправленных запросов и полученных ответов. Когда вы отправляем запрос, счетчик инкрементится, когда приходит ответ, декрементится. В самом generic`e реализовываем метод, который будет проверять данный счетчик и если он не равен 0, то пусть ждет, но ограничивайте ожидание, ответ от сервера может и не прийти.

Взаимодействие кода тестов и браузера.

Порой нам нужно будет получать состояния или какие-то данные, для проверки их значений с ожидаемыми. Сразу напишите пути получения этих данных. К примеру если вы используете AngularJS, то чтоб получить доступ к данным сервиса, напишите прослойку для этого.

Если нету какой-то возможности с помощью тестов эмулировать действия пользователя, то нужно вызывать обработчики этих событий. Дайте возможность тестам стучаться к исполняемому JS коду.

Разные среды исполнения

Чаще всего получается так, что тест работает у вас на компе, но не работает у других. Это может быть связано с ОС, версией селениума, разрешением монитора и вплоть до версий браузера. Советую, заведите себе дешевый VPS, на котором вы сможете запускать тесты. На серверной линухе можно запускать тесты прямо из браузера. К примеру ман, который мне помог www.alittlemadness.com/2008/03/05/running-selenium-headless В добавок, вы сэкономите свое время, пока будете ожидать завершения тестов. Не забудьте, браузер весьма требовательный по оперативке, добавьте хороший запас swap.

Баги драйверов и самого селениума

Первое, посетите code.google.com/p/selenium/issues/list и пробегитесь глазами по багам.

Второе, если вы уверены, что это обязано работать, пройдитесь JS дебагом по коду. Вполне вероятно что вы найдете место, которое бажит по вине самого селениума или драйвера. К примеру я наткнулся на баг, когда при mouse move, chomedriver не передает событие which, которе отвечает за текущую нажатую кнопку мыши.

Так-же известная неприятность, которая связа со скролами. Селениум ничего не умеет скролить кроме скролла у body. Решения два. Писать функцию скролла или на сервере ставить большое разрешение виртуального монитора.

Часто тесты могут глючить из-за таймаутов. Воспользуйтесь функционалом, который сможет повторят тесты. Дайте ему возможность на сервере перезапускать тест раза 3. Если тест валится, значит он не рабочий, если он валится периодически, проблемы в таймаутах, которые не заметны пользователю, но заметны самому селениуму.

На последок

Тестируйте и всегда покрывайте тестами исправленные баги. Не важно на сколько долго будут исполняться тесты, главное чтоб ваше детище работало всегда стабильно.

Легкое веб-тестирование с Python, Pytest и Selenium WebDriver, часть 1: постановка целей

Автор: Энди Найт (Andy Knight)
Оригинал статьи
Перевод: Ольга Алифанова

Сталкивались ли вы с багами в веб-приложениях? Еще бы, все с ними встречались. Баги плохо выглядят, портят пользователю впечатление, и снижают ценность веб-приложения. Серьезные баги могут повлечь за собой большие издержки для бизнеса и повредить репутации компании.

Как предотвратить проникновение багов к пользователям? Лучший способ поймать баги – протестировать веб-приложение. Однако Web UI-тестирование может быть непростой задачей. Оно требует больше усилий, нежели юнит-тестирование, и славится своей нестабильностью.

Не бойтесь! Это пособие сделает тестирование Web UI простым занятием. Мы создадим простое, но устойчивое тест-решение для Web UI, используя Python, pytest, и Selenium WebDriver. Мы изучим стратегии хорошего тест-дизайна, а также паттерны хорошего кода автоматизации. К концу этого руководства вы будете владеть тест-автоматизацией веб-приложений! Ваш тест-проект на Python может также стать основой для ваших собственных кейсов.

Пример проекта

В ходе обучения мы создадим пример тест-проекта с рядом основных тестов для поисковой системы DuckDuckGo. Все инструкции и код будут предоставлены. Я очень рекомендую создать и пополнять этот проект на вашем собственном компьютере в ходе продвижения по руководству.

Пример проекта требует базовых навыков программирования на Python. Убедитесь, что на вашей машине установлена последняя версия Python 3 (а не Python 2). Вы можете скачать ее с Python.org. Код будет написан на Python 3.7.3. Примеры для командной строки будут использовать UNIX (однако в других операционных системах все примерно так же). Я также рекомендую хорошую Python IDE вроде PyCharm или Visual Studio Code.

Полный код проекта размещен на GitHub: https://github.com/testproject-io/python-webui-testing. У каждой главы есть ветка, соответствующая новому описанному в разделе коду. Мастер-ветка содержит финальную версию. Если вы застряли, сравните свой код с кодом в GitHub.

Тестирование, движимое целями

Многие подходы к разработке «движимы» какой-либо целью. Разработка «через тестирование» побуждает разработчиков писать тесты до создания кода продукта. Разработка «через поведение» побуждает команды определять фичи как спеки с примерами. Я хотел бы ввести новый термин – «тестирование через цели».

Прежде чем прикоснуться к клавиатуре и начать создавать тесты, задайте себе вопрос – какую цель я преследую, тестируя? Тестирование – отличная штука, но мы не тестируем просто чтобы потестировать. Тестироавние – способ достижения качества. Команды должны решить, какие аспекты качества для них наиболее важны, а затем разработать подходящую тест-стратегию. К примеру, посмотрим на некоторые цели и стратегии для тестирования веб-приложения:





Цель

Стратегия

90% всех фич базово покрыты тестами.

Использование инструмента покрытия кода с юнит-тестами.

Время загрузки веб-страниц менее секунды..

Использование инструментов тестирования производительности для измерения времени загрузки страниц.

Разработчиков предупреждают о новых регрессах в течение двух часов.

Настройка непрерывного тестирования как части процесса разработки.

Зачем нам Web UI-тестирование?

Веб-приложения предназначены для людей, которые визуально взаимодействуют со страницей, не видя ее управляющего кода. Следовательно, Web UI-тестирование нацелено на проверку пользовательского взаимодействия в реальном браузере. Тесты Web UI – истинный end-to-end, потому что все, спрятанное за фронт-эндом – сервисы, базы данных, и все прочие системы – должны быть в строю, чтобы всецело поддерживать приложение. Эти тесты отвечают на один главный вопрос – работают ли функции приложения на самом деле? Они – неотъемлемая часть устойчивой стратегии тестирования веб-сайта.

К счастью, тесты Web UI можно автоматизировать ради стабильности, повторяемости и скорости. Пакеты вроде Selenium WebDriver позволяют разработчикам автоматизировать браузерные взаимодействия на языках типа Java, C# и Python. Более продвинутые инструменты (например, TestProject) предоставляют полную платформу для записи, рефакторинга и отчетности о Web UI-тестах прямо из коробки.

Однако у Web UI-тестирования есть и недочеты:

  1. Это медленные тесты, даже если они автоматизированы. Им нужно время на открытие браузера, загрузку страниц, и отправку взаимодействий. Типичный автоматизированный Web UI-тест занимает около минуты, в то время как типичный юнит-тест – миллисекунду.
  2. Эти тесты не могут указать на ошибку в коде, в отличие от юнит-тестов. К примеру, Web UI-тест может выявить неверное отображение форматов строки, но он не может сообщить, какой метод, файл и номер строчки виноваты в этом.
  3. Эти тесты могут быть нестабильными. Любой тест черного ящика полагается на тестируемую систему. Состояние гонки и проблема остановки – это их данность. Код тест-автоматизации нуждается в тщательном дизайне и испытаниях на безопасность, чтобы стать устойчивым.

Если кратко,Web UI-тесты дороги: они требуют времени, опыта и поддержки.

Как оправдать затраты

Лучший способ минимизировать вышеописанные риски – балансировка тест-стратегии с бюджетной эффективностью. Не каждая фича нуждается в Web UI-тесте. Вместо этого концентрируйтесь на самых критических функциях, и придерживайтесь «счастливого пути», а не граничных случаев. Убедитесь, что вы достигли хорошего покрытия на уровне юнит-тестов и интеграции, чтобы поймать баги как можно раньше. Более широкое покрытие на более низких уровнях ведет к пониженному риску на более высоких уровнях, а это в свою очередь значит, что вам потребуется меньше Web UI-тестов.

Эта зависимость наилучшим образом иллюстрируется знаменитой тест-пирамидой:

 

Тест-пирамида побуждает команды балансировать высокоуровневые дорогие тесты (вроде Web UI) с более низкоуровневыми, быстрыми, простыми тестами (вроде юнит-тестов или API-тестов).

Наши цели

Наши цели в этом руководстве очень прямолинейны:

  1. Изучить базовые навыки автоматизации Web UI с Python.
  2. Настроить хороший проект тест-автоматизации на Python, который можно расширять новыми тестами.
  3. Написать и локально прогнать несколько примеров тестов.

Мы сконцентрируемся целиком на Web UI-тестировании.

Продолжение следует.

Обсудить в форуме

первый тест при помощи Selenium WebDriver, Python и Chrome

Автор: Энди Найт (Andy Knight)
Оригинал статьи
Перевод: Ольга Алифанова

Теперь WebDriver готов к работе – давайте напишем наш первый web-тест! Это будет простой поиск DuckDuckGo. DuckDuckGo – это поисковик, который не отслеживает пользовательские данные. Пользователи могут вводить запросы и получать ссылки на соответствующие сайты, как и в любой другой поисковой системе.

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

  1. Перейти на домашнюю страницу DuckDuckGo.
  2. Ввести поисковый запрос.
  3. Убедиться, что
    1. Результаты появились на странице результатов.
    2. Поисковый запрос появился в строке поиска.
    3. Как минимум один результат поиска содержит поисковый запрос.

Это простенький тест, однако он полностью покрывает типичное поисковое поведение.

Код

Добавьте тест-функции в tests/test_web.py:

  1. def test_basic_duckduckgo_search(browser):
  2. URL = ‘https://www.duckduckgo.com’
  3. PHRASE = ‘panda’
  4. browser.get(URL)
  5. search_input = browser.find_element_by_id(‘search_form_input_homepage’)
  6. search_input.send_keys(PHRASE + Keys.RETURN)
  7. link_divs = browser.find_elements_by_css_selector(‘#links > div’)
  8. assert len(link_divs) > 0
  9. xpath = f»//div[@id=’links’]//*[contains(text(), ‘{PHRASE}’)]»
  10. results = browser.find_elements_by_xpath(xpath)
  11. assert len(results) > 0
  12. search_input = browser.find_element_by_id(‘search_form_input’)
  13. assert search_input.get_attribute(‘value’) == PHRASE

Функция test_basic_duckduckgo_search внедряет нашу тест-процедуру согласно паттерну «Подготовка-Действие-Проверка». Заметьте, что тест-функция объявляет параметр browser, имеющий имя, аналогичное фикстуре для настройки и очистки ChromeDriver. Pytest автоматически вызовет фикстуру и внедрит отсылку к WebDriver при каждом запуске этого теста. Затем тест-функция использует переменную browser для осуществления ряда вызовов WebDriver. Давайте посмотрим, как они работают.

Подготовка

URL = ‘https://www.duckduckgo.com’

Тест объявляет URL для домашней страницы DuckDuckGo как переменную для читабельности и поддерживаемости.

PHRASE = ‘panda’

Это поисковый запрос, который будет использоваться в тесте. Так как тест покрывает «базовый» поиск, запрос не особенно важен. Тесты, проверяющие более сложное поведение, должны использовать более сложные запросы. Тест снова объявляет ее в начале тест-функции для читабельности и поддерживаемости.

browser.get(URL)

Начальная точка для теста – это домашняя страница DuckDuckGo. Этот вызов открывает заданный URL в браузере. Имейте, однако, в виду – этот вызов не ждет загрузки страницы. Он просто инициирует взаимодействие загрузки.

Действие

search_input = browser.find_element_by_id(‘search_form_input_homepage’)

Первый шаг в автоматизации веб-взаимодействий – это поиск целевого элемента (или элементов). Элементы могут как появляться на странице, так и не появляться. Автоматизация должна использовать локатор для поиска элемента, если он существует, а затем сконструировать объект, представляющий этот элемент. Существует множество типов локаторов – ID, имена классов, CSS-селекторы, XPath… Локаторы найдут все совпадающие элементы на странице – их может быть больше одного. Попробуйте использовать наиболее простой локатор, уникально идентифицирующий целевой элемент.

Для создания локаторов нужно увидеть HTML-структуру страницы. Chrome DevTools упрощает исследование разметки любых страниц. Просто кликните на странице правой кнопкой и выберите «Inspect». Вы увидите все элементы на вкладке «Elements». Для нашего теста нам нужно поле ввода поискового запроса на домашней странице DuckDuckGo. Этот элемент имеет атрибут id со значением “search_form_input_homepage”, как показано ниже:

Мы можем получить этот элемент, используя метод WebDriver find_element_by_id. Переменная search_input присваивается объекту, представляющему строку ввода запроса на странице. Помните, что так как ожидания у копии WebDriver неявные, он будет ожидать появления элемента ввода поискового запроса вплоть до десяти секунд.

search_input.send_keys(PHRASE + Keys.RETURN)

Когда элемент у нас на руках, мы можем инициировать взаимодействия с ним. Метод send_keys отправляет последовательность нажатий клавиш элементу search input – как сделал бы реальный пользователь при помощи клавиатуры. Вызов выше посылает поисковый запрос. Ключ RETURN в конце запускает поиск.

Проверка (1)

link_divs = browser.find_elements_by_css_selector(‘#links > div’)

Страница результатов должна отображать элемент div с ID «links», у которого есть дочерний элемент div для каждой результирующей ссылки. CSS-селектор выше находит все div результирующих ссылок. Заметьте, что «элементов» тут несколько – этот вызов вернет список.

assert len(link_divs) > 0

Тест должен убедиться, что результаты для поискового запроса действительно появились. Это утверждение проверяет, что на странице найдена хотя бы одна результирующая ссылка.

Проверка (2)

xpath = f»//div[@id=’links’]//*[contains(text(), ‘{PHRASE}’)]»

Мы проверили, что какие-то результаты появились, но надо еще и убедиться, что результаты соответствуют нашему поисковому запросу. Для выявления ссылок, содержащих в тексте наш запрос, можно использовать XPath. XPath сложнее имен и CSS-селекторов, но и мощность у них повыше. Наш XPath ищет любой div с ID «links», а затем – его потомков, содержащих поисковый запрос.

(«f» в начале строки для вас в новинку? Это f-строка, она упрощает форматирование!)

phrase_results = browser.find_elements_by_xpath(xpath)

Этот вызов находит все элементы, используя предварительно связанный XPath. Мы могли совместить эти две строки в одну, но разделение строк делает код более читабельным, и более «пайтоновским».

assert len(phrase_results) > 0

Как и предыдущее утверждение, это убеждается, что найден как минимум один элемент. Это простая проверка работоспособности. Ее можно сделать более надежной – например, убедиться, что все результаты на странице содержат поисковый запрос – но это будет сложным делом. Не каждый результат может содержать поисковый запрос в точности. К примеру, некоторые могут отличаться регистром. Локаторы и логика продвинутой верификации должны быть куда сложнее. Так как это базовый тест поиска, достаточно более простой проверки.

Проверка (3)

search_input = browser.find_element_by_id(‘search_form_input’)

Финальная проверка убеждается, что поисковая строка все еще отображается в строке ввода. Строчка выше идентична вызову поиска элемента из стадии подготовки – она снова находит элемент строки поиска. Почему бы не воспользоваться объектом search_input снова? К сожалению, предыдущий элемент протух. Страница изменилась с домашней страницы на страницу результатов. Несмотря на то, что элементы выглядят одинаково, они не идентичны, и нам нужен новый локатор. Поэтому нам нужно получать свежий элемент.

assert search_input.get_attribute(‘value’) == PHRASE

Текст, введенный в элемент поля ввода, доступен как его атрибут “value”. Эта строчка убеждается, что атрибут “value” равен поисковому запросу. Она проверяет, что запрос не испарился.

Проверка и запуск веб-теста

Полный код for tests/test_web.py теперь должен выглядеть так (с комментариями для ясности):

  1. «»»
  2. Этот модуль содержит веб-тест-кейсы для этого руководства.
  3. Тесты используют Selenium WebDriver с Chrome и ChromeDriver.
  4. Фикстуры настраивают и очищают копию ChromeDriver.
  5. «»»
  6. import pytest
  7. from selenium.webdriver import Chrome
  8. from selenium.webdriver.common.keys import Keys
  9. @pytest.fixture
  10. def browser():
  11. # Инициализация ChromeDriver
  12. driver = Chrome()
  13. # Неявное ожидание готовности элементов перед попыткой взаимодействия
  14. driver.implicitly_wait(10)
  15. # Возвращение объекта драйвера в конце настройки
  16. yield driver
  17. # Для очистки покиньте драйвер
  18. driver.quit()
  19. def test_basic_duckduckgo_search(browser):
  20. # Настройте данные для тест-кейса
  21. URL = ‘https://www.duckduckgo.com’
  22. PHRASE = ‘panda’
  23. # Перейдите на домашнюю страницу DuckDuckGo
  24. browser.get(URL)
  25. # Найдите элемент ввода поискового запроса
  26. # В модели DOM его атрибут ‘id’ равен ‘search_form_input_homepage’
  27. search_input = browser.find_element_by_id(‘search_form_input_homepage’)
  28. # Отправьте поисковый запрос в поле ввода и нажмите ENTER
  29. search_input.send_keys(PHRASE + Keys.RETURN)
  30. # Убедитесь, что результаты появились на странице результатов
  31. link_divs = browser.find_elements_by_css_selector(‘#links > div’)
  32. assert len(link_divs) > 0
  33. # Убедитесь, что как минимум один результат поиска содержит поисковый запрос
  34. xpath = f»//div[@id=’links’]//*[contains(text(), ‘{PHRASE}’)]»
  35. phrase_results = browser.find_elements_by_xpath(xpath)
  36. assert len(phrase_results) > 0
  37. # Убедитесь, что поисковый запрос сохранился
  38. search_input = browser.find_element_by_id(‘search_form_input’)
  39. assert search_input.get_attribute(‘value’) == PHRASE

Давайте запустим тест, чтобы убедиться, что он работает:

  1. $ pipenv run python -m pytest
  2. ============================= test session starts ==============================
  3. platform darwin — Python 3.7.3, pytest-4.5.0, py-1.8.0, pluggy-0.12.0
  4. rootdir: /Users/andylpk247/Programming/automation-panda/python-webui-testing
  5. collected 9 items
  6. tests/test_math.py …….. [ 88%]
  7. tests/test_web.py . [100%]
  8. =========================== 9 passed in 6.10 seconds ===========================

При запуске веб-теста откроется Google Chrome. Вы увидите, как он автоматически введет поисковый запрос, дождется страницы результатов, а затем закроет браузер. Легко и просто!

Если тест не запустился, проверьте:

  • Есть ли на тест-машине установленный Chrome
  • Есть ли ChromeDriver в системном пути
  • Соответствует ли версия ChromeDriver версии Chrome
  • Нет ли проблем с разрешениями доступа к файлам
  • Не блокируются ли порты файерволом
  • Верен ли код теста.

Как насчет улучшений?

Поздравляю с созданием вашего первого Web UI-теста! Это, безусловно, занимает больше времени, нежели юнит-тесты.

Несмотря на то, что тест успешно запускается, мы можем сделать кое-что еще, дабы улучшить код. В следующий раз мы проведем рефакторинг этого теста, используя паттерн Page Object.

Обсудить в форуме

Selenium тестирование в Python

Библиотека Selenium в Python предоставляет простой API для написания функциональных и интеграционных тестов веб-приложений. Благодаря Selenium Python API легко получить доступ ко всем функциям Selenium WebDriver интуитивным способом.

Для работы Selenium требуется WebDriver. В настоящее время есть WebDriver для Firefox, Chrome, Edge и Safari. В примерах далее будет использован chromedriver.

Установка Selenium

Для установки пакета selenium воспользуемся программой pip. Установку рекомендуется проводить в виртуальном окружении Python.

(venv) $ pip install selenium

Установка chromedriver

Процесс установки довольно прост, потому что chromedriver просто исполняемый файл в операционной системе, с которым Selenium будет взаимодействовать в процессе тестирования. Сверьтесь с официальной страницей chromedriver для загрузки и последующей установки свежей версии программы. Установка в Linux выглядит так :

(venv) $ curl -L https://chromedriver.storage.googleapis.com/2.32/chromedriver_linux64.zip -o chromedriver.zip
(venv) $ sudo unzip chromedriver.zip -d /usr/bin/
(venv) $ sudo chmod +x /usr/bin/chromedriver

Управление Chrome из Python

Теперь импортируем пакет webdriver из selenium сказав ему использовать chromedriver.

from selenium import webdriver

driver = webdriver.Chrome()

Выполнение этого кода приведёт к кратковременному появлению окна Chrome. Дальше ничего не будет происходить, потому что пример не сообщает webdriver никаких дополнительных инструкций.

Решим простую задачу получения текущей версии программы учёта картриджей и принтеров в организации. Беглый взгляд на код главной страницы показывает, что версия находится внутри разметки:

…
    <div>
        <div>
            <span>20 декабря 2017 г.</span>
            <p><a href="news/15">Релиз 1.8.0</a></p>
        </div>
    </div>
…

Таким образом, версия программы находится в тэге a внутри div с классом callout. Поиск его на странице показывает, что этот класс не уникален, поэтому используем Selenium для поиска первого элемента и получения его содержимого следующим образом:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('https://www.severcart.org/')
element = driver.find_elements_by_css_selector('.callout a')[0]
print(element.text)
driver.close()

Запуск кода приведёт к вызову окна Chrome, которое загружает страницу целиком, затем производится поиск нужного результата с последующей его печатью в терминал. После выполнения скрипта производится закрытие окна браузера. В этом примере используется селектор CSS с Selenium методом find_elements_by_css_selector. Для навигации по страницам также доступно множество других методов find_element_by_ *.

Скрытый запуск браузера

Для последующих примеров будет полезно использовать chromedriver в режиме скрытого запуска браузера. Для этого немного изменим предыдущий пример:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.severcart.org/')
element = driver.find_elements_by_css_selector('.callout a')[0]
print(element.text)
driver.close()

Выполнение этого кода распечатает текст текущей версии, как и в предыдущем примере, но на этот раз не появится окно Chrome. Это связано с тем, что новая версия использует класс webdriver.chrome.options для передачи аргументов в бинарник Chrome с использованием chrome_options. Единственная опция которая здесь передается —headless, которая сообщает Chrome о выполнении действий без визуализации.

Разница в скорости выполнения двух примеров незначительна, но при использовании на реальных тестах, с возможными сотнями отдельных тестов, экономия времени будет существенной.

Ключевые возможности selenium

Существует множество важных классов и методов Selenium, которые будут широко использоваться для тестирования веб-страниц. Вот краткий список некоторых ключевых функций, о которых нужно знать.
— Поиск элементов
— Заполнение input
— Очистка input
— Ожидание

Поиск элементов

Всего восемь методов поиска (плюс ещё восемь во множественном числе):

find_element_by_class_name
find_element_by_css_selector
find_element_by_id
find_element_by_link_text
find_element_by_name
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_xpath

Все эти методы довольно длинные, поэтому хорошим помощником является класс webdriver.common.By. By может заменить методы более длинной формы простым сокращением. Предыдущий пример кода можно заменить на:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.severcart.org/ ')
element = driver.find_elements(By.CSS_SELECTOR, '.callout a')[0]
print(element.text)
driver.close()

Хотя этот код не является кратким, поэтому предлагается его немного доработать создав метод обертки для поиска элементов. Это должно значительно сократить усилия по набору этих методов по мере увеличения размера теста и сложности. Вот примерная обёртка:

def find(self, by, value):
    elements = self.driver.find_elements(by, value)
    if len(elements) is 1:
        return elements[0]
    else:
        return elements

Используется множественный метод find_elements и возвращает либо список, либо один элемент в зависимости от того, сколько их найдено. При этом можно использовать find(By.ID, ‘my-id’), вместо driver.find_element_by_id(‘my-id’). Эта форма преобразует код в гораздо более чистый, особенно при переходе между различными доступными методами поиска.

Отправка Input

Большинство проектов веб-приложений будут иметь дело с полями ввода, Selenium также это хорошо поддерживает. Каждый класс webelement (результат различных методов find_element) содержит метод send_keys, который может использоваться для моделирования ввода текста в элементе. Попробуем использовать эту функцию для поиска «Python» в Википедии.

Быстрый просмотр источника страницы Википедии показывает, что элемент ввода поиска использует идентификатор searchInput.

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
el = driver.find_element(By.ID, 'searchInput')
el.send_keys('Python')

Вышеприведенный код откроет окно Chrome с загруженной страницей в Википедии и «Python» в поле ввода поиска. Это окно остаются открытым, потому что код не включает команду driver.close(), которая используется в предыдущих примерах.

Есть несколько вариантов отправить форму. Далее приведено несколько способов, которые позволяют это выполнить.

Отправка содержимого формы

Еще раз взглянув на html источник в Википедии, форма поиска содержит id=search-form. Далее идентификатор можно использовать с методом webelement.submit() для отправки формы.

Добавьте в предыдущий пример следующий код:

form = driver.find_element(By.ID, 'search-form')
form.submit()

Запуск кода приведёт к открытию окна Chrome с результатами поиска в Википедии слова Python.

Нажатие кнопки submit формы

Страница поиска Wikiedpia включает в себя причудливую, стилизованную кнопку отправки запроса поиска. У него нет уникального идентификатора, поэтому для определения и «щелчка» кнопки код должен использовать какой-либо другой метод. Это единственный элемент button внутри формы поиска, поэтому его можно легко выбрать с помощью селектора CSS.

Добавьте в пример использования Input:

button = driver.find_element(By.CSS_SELECTOR, '#search-form button')
button.click()

Нажатие клавиши ENTER

В заключении, Selenium содержит набор кодов клавиш, которые могут использоваться для имитации нажатия «специальных» (не буквенно-цифровых) клавиш. Эти коды находятся в webdriver.common.keys. Чтобы отправить форму, код должен будет использовать клавишу Enter, поэтому пересмотренная версия поискового кода Википедии выглядит так:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get('https://www.wikipedia.org/')
el = driver.find_element(By.ID, 'searchInput')
el.send_keys('Python')
el.send_keys(Keys.RETURN)

Как и два предыдущих примера, этот скрипт запустит открытую страницу Chrome с результатами поиска в Википедии.

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

Очистка input

Хотя Selenium предлагает метод webelement.clear(), его реализация несовместима в разных браузерах, и ее поведение может быть определено по-разному в зависимости от тестируемого приложения и элемента. По этим причинам не рекомендуется им пользоваться для очистки полей ввода формы. Вместо этого класс Keys может использоваться для имитации нажатия клавиши backspace несколько раз в input.

Простая функция реализации.

from selenium.webdriver.common.keys import Keys


def clear(element):
    value = element.get_attribute('value')
    if len(value) > 0:
        for char in value:
            element.send_keys(Keys.BACK_SPACE)

Простая функция будет принимать WebElement, вычислять длину его атрибута value и имитировать нажатие BACK_SPACE, пока весь текст не будет удален из input.

Давайте используем Selenium для поиска в Google слова «selenium». Элемент input поиска Google не имеет уникального идентификатора или класса, но он использует атрибут name со значением «q». Его можно использовать для поиска элемента и отправки keys.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys


def clear(element):
    value = element.get_attribute('value')
    if len(value) > 0:
        for char in value:
            element.send_keys(Keys.BACK_SPACE)

driver = webdriver.Chrome()
driver.get('https://www.google.com/')
el = driver.find_element(By.NAME, 'q')
el.send_keys('selenium')
el.send_keys(Keys.RETURN)

На странице результатов поле поиска по-прежнему имеет значение «q» и теперь заполнено значением «selenium». Хотя имя не изменилось, Selenium нужно будет снова найти элемент, потому что страница изменилась. Добавьте в код изменения, чтобы найти элемент и использовать пользовательскую функцию clear() для его очистить:

el = driver.find_element(By.NAME, 'q')
clear(el)

В целом BACK_SPACE должен быть намного надежнее, чем метод webelement.clear().

Ожидание

«Ожидание» в Selenium может быть обманчиво сложной проблемой. До сих пор все примеры основывались на способности Selenium дождаться, когда страница закончит загрузку, прежде чем предпринимать какие-либо конкретные действия. Для простых тестов это может быть вполне достаточным. Но по мере усложнения тестов и приложений этот метод может не всегда быть пригодным.

Selenium предоставляет некоторые полезные инструменты для решения этой проблемы —

Неявные ожидания
Самый простой способ добавить вызов метода WebDriver.implicitly_wait (). Метод принимает целочисленный ввод, который определяет, сколько секунд ждать при выполнении любого из методов find_element.

По умолчанию неявное ожидание равно нулю (или нет ожидания), поэтому, если конкретный элемент не найден сразу, Selenium будет вызывать исключение NoSuchElementException. Попробуем найти элемент name с атрибутом «query» на GitHub (его нет):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get('https://www.github.com/')
el = driver.find_element(By.NAME, 'query')

Этот код вызовет исключение NoSuchElementException после того, как Chrome загрузит домашнюю страницу GitHub.

Теперь давайте проверим код ниже, который устанавливает неявное время ожидания в пять секунд для одной и той же невыполнимой задачи:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('https://www.github.com/')
el = driver.find_element(By.NAME, 'query')

Этот код создаст то же самое исключение, но он будет ждать пять секунд, прежде чем это сделать.

Хотя эти примеры рисуют очень простую картину, реальность такова, что различные условия любой тестовой среды или приложения будут влиять на способность Selenium определять, когда страница загружена или существует ли элемент.

Рекомендуется всем тестам установку 10 секундного неявного времени ожидания. Это должно помочь предотвратить прерывистые исключения, вызванные проблемами с такими базовыми элементами, как сетевое подключение или баги веб-серверов.

Ожидаемые условия (явные ожидания)

Когда неявных ожиданий недостаточно, ожидаемые условия чрезвычайно ценны. Класс WebDriverWait предоставляет методы until() и until_not(), которые могут использоваться с ожидаемыми условиями для создания более сложных и нужных условий ожидания.

presence_of_element_located() примет объект, описывающий метод и локатор, и вернет true, если объект существует в DOM. Это можно использовать с WebdriverWait.until () и временем ожидания (в секундах):

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebdriverWait
from selenium.webdriver.support import expected_conditions as ec

driver = webdriver.Chrome()
WebdriverWait(driver, 5).until(ec.presence_of_element_located((By.ID, 'html-id')))

Для чего нужен WebDriverWait? Кратко — одностраничные приложения (SPA).
Тестирование может потребовать перемещения навигационных элементов приложения, и если страница не будет полностью перезагружена, Selenium должен будет использовать WebDriverWait, чтобы делать такие вещи, как ожидание загрузки нового раздела или таблицы данных после вызова API в стиле AJAX.

Другие ожидаемые условия будут в значительной степени соответствовать одному и тому же синтаксису и в основном иметь (очень) подробные имена. Два из других, которые я нашел полезными на практике, — text_to_be_present_in_element() и element_to_be_clickable().

Время ожидания

Также используется метод обходного пути для простого, явного ожидания по времени без каких-либо ожидаемых условий. Одна из областей, где это может пригодиться — это тестирование результата «секундомера» на Javascript, который обновляется в реальном времени. В рамках теста я запускаю секундомер, подождите две секунды, а затем проверю, чтобы отображаемое время было правильным. Чтобы достичь этого, я создал метод, который по существу делает ожидаемое условное ожидание, которое умышленно уходит в прошлое:

from selenium import webdriver
from selenium.webdriver.support.ui import WebdriverWait

def wait(self, seconds):
    try:
        WebdriverWait(self.driver, seconds).until(lambda driver: 1 == 0)
    except TimeoutException:
        pass

Этот метод можно использовать, например, ждать пять секунд, вызвав wait (5). WebDriverWait вызовет исключение через пять секунд, потому что аргумент until () — простая лямбда, которая всегда будет возвращать False. Улавливая и передавая исключение, метод просто ожидаеи указанное количество секунд и ничего больше.

Автоматизация тестирования веб-приложения с использованием Selenium WebDriver, Python, и Behave

Всем привет!
Сегодня я хочу поделится нашим опытом автоматизации тестирования веб-приложения с использованием Selenium WebDriver и фреймворка Behave.
Если интересно добро пожаловать под кат.

Перед началом

Тут я не буду подробно останавливаться на том, как искать элементы, и как взаимодействовать с ними при помощи selenium webdriver, а расскажу только о том, как можно легко и удобно писать и гонять тесты написанные на python с использованием behave.

1. Установка нужностей

Для начала нам понадобится python. Скачать его можно тут. Я буду использовать версию 2.7.6, а вы можете использовать ту, которая вам больше нравится. Кроме python нам еще понадобятся selenium и сам behave.
Установить selenium можно с использованием pip:
pip install selenium

Что такое selenium?

Теперь установим behave. Можно с использованием pip:
pip install behave


А можно скачать тут: behave на pypi

Что такое behave? Behave — это фрейморк для программирования через поведения в python-стиле(Что такое Behavior-driven development?).

Behave использует тесты написанные на натуральном языке, с логикой на python.

Он обладает несколькими серьезными плюсами:

+ Легкая установка

+ Отчеты в формате junit

+ Тесты может писать любой человек на естественном языке.

+ Есть возможность интеграции с jenkins (с другими CI, наверное, тоже)

Сравнение behave с похожими инструментами.

Когда все необходимое установлено можно приступать к настройке окружения для написания и выполнения тестов.

2. Настройка

Директория откуда будем запускать тесты должна содержать:
1. Файлы с расширением .feature — сами тесты.
2. Директорию steps, которая содержит файлы .py с описанием шагов, из которых составляются тесты, на python.

Опционально можно добавить в директорию содержащую папку steps файл — environment.py c кодом который надо будет выполнять прежде или после определенных событий в тесте.

Подробное описание этого файла тут.

Наш пример будет максимально простым, поэтому мы не будем включать этот файл.

Итого, как выглядит наша директория в минимальной комплектации:

features/

features/everything.feature

features/steps/

features/steps/steps.py

пример из behave tutorial

Вот и вся настройка, можно писать первый тест!

3. Написание и запуск первого теста

Для начала нам понадобится создать в папке steps, файл c расширением .py, в котором мы опишем логику нашего теста.
Назовем этот файл first_test.py.
Для примера, я решил взять простой кейс тестирования поисковой формы ya.ru.

Итак, скопируйте код ниже в файл firs_test.py.

# -*- coding: utf-8 -*-
from behave import *
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

#Откроем главную страницу. Передадим в качестве аргумента адрес страницы.
@given('website "{url}"')
def step(context, url):
#Измените строку, для выполнения теста в другом браузере
    context.browser = webdriver.Firefox()
    context.browser.maximize_window()
    context.browser.get("http://ya.ru")

#Теперь нажмем на кнопку "Найти"
@then("push button with text '{text}'")
def step(context, text):
    WebDriverWait(context.browser, 120).until(
        EC.element_to_be_clickable((By.XPATH, '//button'))
    )
    context.browser.find_element_by_xpath('//button').click()

#Проверим, что мы на странице с результатами поиска, есть некоторый искомый текст
@then("page include text '{text}'")
def step(context, text):
    WebDriverWait(context.browser, 120).until(
        EC.presence_of_element_located((By.XPATH, '//*[contains(text(), "%s")]' % text))
    )
    assert context.browser.find_element_by_xpath('//*[contains(text(), "%s")]' % text)
    context.browser.quit()

Если лень смотреть код, то логика такая:

1. Открыть ya.ru

2. Клацнуть на кнопку «Найти»

3. Проверить, что на странице выдачи есть текст: «Задан пустой поисковый запрос»

Теперь когда готова логика теста можно написать сам тест.

В папке с директорией steps создадим файл .feature, в котором используем написанные шаги:

#Укажем что это за фича
Feature: Checking search
#Укажем имя сценария (в одной фиче может быть несколько)
Scenario: Сheck some text in search results
#И используем наши шаги.
  Given website "ya.ru"
  Then push button with text 'Найти'
  Then page include text 'Задан пустой поисковый запрос'

Шаги из теста, по декораторам свяжутся с python функциями. (Декораторы обозначены знаком @)

Теперь запустим наш тест.

Перейдем в папку, где он лежит, и выполним команду:

behave -i first_test.feature

Флаг -i указывает, что необходимо запустить только файлы подходящие под паттерн поиска.
Если запустить c флагом —junit то получим отчет в формате junit.

Если все прошло хорошо, то отчет будет, примерно, таким:


Feature: Checking search # first_test.feature:1

  Scenario: Send some text in search box and check some text in search results  # ya.feature:2
    Given website "ya.ru"                                                       # steps/test.py:9 0.662s
    Then push button with text 'Найти'                                          # steps/test.py:14 0.242s
    Then page include text 'Задан пустой поисковый запрос'                      # steps/test.py:22 1.009s

1 feature passed, 0 failed, 0 skipped
1 scenario passed, 0 failed, 0 skipped
3 steps passed, 0 failed, 0 skipped, 0 undefined
Took 0m1.913s

Заключение

Здесь я привел только самое основное.
Фичи selenium неисчислимы, да и behave много чего умеет. В том числе, отчеты в формате junit и интеграцию с jenkis.
Спасибо за внимание, и хороших выходных!

Список использованных материалов

Селениум:
habrahabr.ru/post/152653
habrahabr.ru/post/248559
www.seleniumhq.org/docs
selenium2.ru/docs.html
selenium-python.readthedocs.org/index.html
selenium.googlecode.com/svn/trunk/docs/api/py/index.html

Behave:
pythonhosted.org/behave

Python:
pypi.python.org
python.org

UPD: Если что-то в статье не очень хорошо написано, или чего-то не хватает, то можно высказаться в комментариях, или написать в личку мне, и мы вместе улучшим ее.

Типы тестирования :: Документация по Selenium

Selenium

  • Начало работы

    • Краткий обзор
  • Введение

    • Проект и инструменты Selenium
    • Об автоматизации тестирования
    • Виды испытаний
    • Об этой документации
  • Установка селена

    • Установка библиотек Selenium
    • Установка двоичных файлов WebDriver
    • Установка автономного сервера
  • Начало работы с WebDriver

    • Браузеры
    • Сторонние драйверы и плагины
    • Установочные элементы
    • Выполнение действий на АВ *
  • WebDriver

    • Понимание компонентов
    • Требования к драйверам
    • Манипуляции с браузером
    • Ожидание
    • Классы поддержки
    • Предупреждения, подсказки и подтверждения JavaScript
    • Http прокси
    • Стратегия загрузки страницы
    • Веб-элемент
    • Клавиатура
  • Удаленный WebDriver

    • Удаленный сервер WebDriver
    • Клиент удаленного WebDriver
  • Указания

    • Страничные объектные модели
    • Язык домена
    • Создание состояния приложения
    • Макет внешних услуг
    • Улучшенная отчетность
    • Избегать совместного использования состояния
    • Независимость испытаний
    • Рассмотрите возможность использования свободного API
    • Свежий браузер за тест
  • Наихудшие практики

    • Captchas
    • Двухфакторная аутентификация
    • Загрузки файлов
    • Коды ответа HTTP
    • Gmail, электронная почта и Facebook
    • Тестовая зависимость
    • Тестирование производительности
    • Звездочка звена

.

Изучите Selenium на реальных примерах

Полный список лучших руководств по Selenium для изучения и освоения Selenium с нуля:

После нескольких частых запросов читателей STH, сегодня мы наконец-то запускаем нашу серию БЕСПЛАТНЫХ учебников по Selenium . В этой серии учебных курсов по Selenium мы подробно рассмотрим все концепции тестирования Selenium и его пакеты с помощью простых для понимания практических примеров.

Эти руководства по Selenium полезны для начинающих и продвинутых пользователей Selenium.Начиная с самого базового учебника по концепциям Selenium, мы постепенно перейдем к более сложным темам, таким как создание фреймворка, Selenium Grid и Cucumber BDD.

Полный список руководств по Selenium в этой серии:

Основы Selenium:

Selenium WebDriver:

000 Selenium

000 Selenium

Советы по Selenium и подготовка к интервью:


Как начать изучение Selenium?

Это лучшее время, чтобы начать самостоятельное изучение Selenium-тестирования с помощью этой бесплатной серии Selenium Training.Читайте учебные пособия, практикуйте примеры у себя дома и задавайте вопросы в разделе комментариев соответствующих руководств. Мы ответим на все эти вопросы.

Мы искренне стремимся помочь вам изучить и освоить один из самых популярных инструментов тестирования программного обеспечения!

Selenium Introduction

Мы очень рады запустить нашу очередную серию учебных пособий по тестированию программного обеспечения. В основе этого руководства лежит убеждение, что вы станете экспертом в одном из широко используемых решений автоматизации тестирования программного обеспечения — Selenium.

В этой серии статей мы рассмотрим различные аспекты Selenium. Selenium — это не просто инструмент, это совокупность независимых инструментов. Мы подробно рассмотрим некоторые инструменты Selenium с практическими примерами, где это возможно.

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

Почему селен?

Текущие тенденции в отрасли показали, что наблюдается массовое движение в сторону автоматизации тестирования.Следовательно, группа повторяющихся сценариев ручного тестирования вызвала потребность в внедрении практики автоматизации этих ручных сценариев.

Есть несколько преимуществ внедрения Automation Test; давайте посмотрим на них:

  • Поддерживает выполнение повторяющихся тестовых случаев
  • Помогает в тестировании большой тестовой матрицы
  • Включает параллельное выполнение
  • Поощряет автоматическое выполнение
  • Повышает точность, уменьшая количество ошибок, генерируемых человеком и деньги

Все эти преимущества приводят к следующему:

  • Высокая рентабельность инвестиций
  • Более быстрый выход на рынок

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

Один из наиболее часто задаваемых вопросов:

  • Какой инструмент мне лучше всего подходит для автоматизации тестов?
  • Это связано с расходами?
  • Легко ли адаптироваться?

Один из лучших ответов на все вышеперечисленные вопросы по автоматизации веб-приложений — это Selenium. Потому что:

  • Это открытый исходный код
  • Он имеет большую базу пользователей и помогает сообществам
  • Он имеет мультибраузерность и совместимость с платформой
  • Он имеет активные разработки репозитория
  • Он поддерживает многоязычные реализации

Первый взгляд at Selenium

Selenium — один из самых популярных пакетов автоматизированного тестирования.Selenium разработан таким образом, чтобы поддерживать и поощрять автоматическое тестирование функциональных аспектов веб-приложений и широкого спектра браузеров и платформ. Благодаря своему существованию в сообществе разработчиков ПО с открытым исходным кодом, он стал одним из наиболее популярных инструментов среди профессионалов в области тестирования.

Selenium поддерживает широкий спектр браузеров, технологий и платформ.


Selenium Components

Selenium — это не просто отдельный инструмент или утилита, это скорее пакет из нескольких инструментов тестирования, поэтому он называется Suite.Каждый из этих инструментов предназначен для удовлетворения различных требований к тестированию и тестовой среде.

Пакет состоит из следующего набора инструментов:

Selenium RC и WebDriver, вместе взятые, широко известны как Selenium 2 . Только Selenium RC также обозначается как Selenium 1 .

Краткое введение в версии Selenium

Selenium Core

Selenium — результат непрерывных усилий инженера по имени Джейсон Хаггинс из ThoughtWorks .Будучи ответственным за тестирование внутреннего приложения Time and Expenses, он осознал необходимость в инструменте автоматизации тестирования, чтобы избавиться от повторяющихся ручных задач без ущерба для качества и точности.

В результате в начале 2004 года он создал программу на JavaScript под названием « JavaScriptTestRunner », которая могла автоматически управлять действиями браузера, которые были очень похожи на действия пользователя, общающегося с браузером.

С этого момента Джейсон начал демонстрировать инструмент широкой аудитории.В конце концов, дискуссии были посвящены отнесению этого инструмента к категории с открытым исходным кодом и его потенциалу роста в качестве повторно используемой среды тестирования для других веб-приложений.

Позже инструмент получил название « Selenium Core ».

Selenium IDE (интегрированная среда разработки Selenium)

Selenium IDE была разработана Шинья Касатани. Изучая Selenium Core, он понял, что этот код JavaScript можно расширить для создания интегрированной среды разработки (IDE), которую можно подключить к Mozilla Firefox.Эта IDE была способна записывать и воспроизводить действия пользователя в экземпляре Firefox, к которому она была подключена. Позже в 2006 году Selenium IDE стала частью пакета Selenium Package. Позже этот инструмент показал большую ценность и потенциал для сообщества.

Selenium IDE — это самый простой и легкий из всех инструментов пакета Selenium. Его функции записи и воспроизведения делают его исключительно простым для изучения при минимальном знакомстве с любым языком программирования. Selenium IDE обладает рядом преимуществ и недостатков, что делает его непригодным для использования в случае более сложных тестовых сценариев.

Преимущества и недостатки Selenium IDE:

Недостатки IDE на самом деле не являются недостатками Selenium. Скорее, это просто ограничения того, чего может достичь IDE. Эти ограничения можно преодолеть с помощью Selenium RC или WebDriver .

Selenium RC (Selenium Remote Control)

Selenium RC — это инструмент, написанный на Java, позволяющий пользователю создавать тестовые сценарии для веб-приложения на любом языке программирования, который он выбирает.В результате появился Selenium RC, который позволил преодолеть различные недостатки, присущие Selenium IDE или Core .

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

Одним из важнейших ограничений была политика Same Origin.

Проблема с той же политикой происхождения:

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

Источник — это последовательная комбинация схемы, хоста и порта URL-адреса. Например, для URL http://www.seleniumhq.org/projects/ источником является комбинация HTTP, seleniumhq.org, 80 соответственно.

Таким образом, Selenium Core (программа JavaScript) не может получить доступ к элементам из источника, отличного от того, где он был запущен.

Например, если я запустил программу JavaScript с сайта «http://www.seleniumhq.org/», то я смог бы получить доступ к страницам в том же домене, например «http: // www.seleniumhq.org/projects/ »или« http://www.seleniumhq.org/download/ ». Другие домены, такие как google.com, yahoo.com, больше не будут доступны.

Таким образом, чтобы протестировать любое приложение, использующее Selenium Core, необходимо установить все приложение на Selenium Core, а также на веб-сервер, чтобы преодолеть проблему политики одного происхождения.

Итак, чтобы управлять политикой одинакового происхождения без необходимости создания отдельной копии тестируемого приложения на Selenium Core, был введен Selenium Remote Control .Пока Джейсон Хаггинс демонстрировал Selenium, другой коллега по ThoughtWorks по имени Пол Хаммант предложил обходной путь политики того же происхождения и инструмент, который можно связать с языком программирования по нашему выбору. Так появился Selenium RC.

В отличие от Selenium IDE, Selenium RC поддерживает широкий спектр браузеров и платформ.

Описание рабочего процесса

  • Пользователь создает тестовый сценарий на желаемом языке программирования.
  • Для каждого языка программирования есть своя клиентская библиотека.
  • Клиентская библиотека депортирует тестовые команды на сервер селена.
  • Сервер Selenium расшифровывает и преобразует тестовые команды в команды JavaScript и отправляет их в браузер.
  • Браузер выполняет команды с помощью Selenium Core и отправляет результаты обратно на сервер Selenium.
  • Сервер Selenium доставляет результаты теста в клиентскую библиотеку.

Перед созданием скриптов Selenium RC необходимо выполнить несколько предварительных условий:

  • Язык программирования — Java, C #, Python и т. Д.
  • Интегрированная среда разработки — Eclipse, Netbeans и т. Д.
  • A Testing Framework (необязательно) — JUnit, TestNG и т. Д.
  • И установка Selenium RC вне курса

Преимущества и недостатки Selenium RC:

См. На следующем рисунке показаны преимущества и недостатки Selenium RC.

Selenium Grid

С Selenium RC срок службы тестировщика всегда был положительным и благоприятным до тех пор, пока новые тенденции не вызвали потребность выполнять одни и те же или разные тестовые скрипты на нескольких платформах и браузерах одновременно, чтобы достичь распределенного тестирования выполнение, тестирование в различных средах и значительная экономия времени выполнения.Таким образом, удовлетворение этих требований Selenium Grid стало очевидным.

Selenium Grid был представлен Пэтом Лайтбоди для удовлетворения потребности в одновременном выполнении тестовых наборов на нескольких платформах.

Selenium WebDriver

Selenium WebDriver был создан еще одним инженером в ThoughtWorks по имени Саймон Стюарт в 2006 году. WebDriver также представляет собой веб-инструмент для тестирования, имеющий небольшое отличие от Selenium RC.Поскольку инструмент был построен на основе, где был создан изолированный клиент для каждого из веб-браузеров; не требовался тяжелый подъем JavaScript. Это привело к анализу совместимости между Selenium RC и WebDriver . В результате был разработан более мощный инструмент автоматизированного тестирования под названием Selenium 2 .

WebDriver — это чистый объектно-ориентированный фреймворк. Он использует встроенную совместимость браузера с автоматизацией без использования каких-либо периферийных устройств.С растущим спросом он приобрел большую популярность и пользовательскую базу.

Преимущества и недостатки Selenium WebDriver:

Дополнительные сведения о преимуществах и недостатках WebDriver см. На следующем рисунке.

Selenium 3

Selenium 3 — это расширенная версия Selenium 2 . Это инструмент, ориентированный на автоматизацию мобильных и веб-приложений.Утверждая, что он поддерживает мобильное тестирование, мы хотим сказать, что API WebDriver был расширен для удовлетворения потребностей тестирования мобильных приложений. Ожидается, что инструмент скоро выйдет на рынок.

Окружающая среда и стек технологий

С появлением и добавлением каждого нового инструмента в наборе Selenium среды и технологии становятся более совместимыми. Вот исчерпывающий список сред и технологий, поддерживаемых Selenium Tools.

Поддерживаемые браузеры

Поддерживаемые языки программирования

Поддерживаемые операционные системы

Поддерживаемые платформы тестирования

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

Вот суть этой статьи.

  • Selenium — это набор из нескольких инструментов автоматического тестирования, каждый из которых предназначен для различных задач тестирования.
  • Все эти инструменты относятся к категории с открытым исходным кодом и поддерживают только веб-тестирование.
  • Selenium Suite состоит из 4 основных компонентов; Selenium IDE, Selenium RC, WebDriver и Selenium Grid .
  • Ожидается, что пользователь с умом выберет правильный инструмент Selenium для своих нужд.
  • Selenium IDE распространяется как плагин Firefox, и его проще установить и использовать. От пользователя не требуется предварительных знаний в области программирования. Selenium IDE — идеальный инструмент для наивного пользователя.
  • Selenium RC — это сервер, который позволяет пользователю создавать тестовые сценарии на желаемом языке программирования. Он также позволяет выполнять тестовые сценарии в широком спектре браузеров.
  • Selenium Grid привносит в Selenium RC дополнительную функцию, распределяя тестовый сценарий на разных платформах и браузерах одновременно для выполнения, тем самым реализуя архитектуру «главный-подчиненный».
  • WebDriver — это совершенно другой инструмент, который имеет ряд преимуществ перед Selenium RC. Слияние Selenium RC и WebDriver также известно как Selenium 2. WebDriver напрямую взаимодействует с веб-браузером и использует свою встроенную совместимость для автоматизации.
  • Selenium 3 — это наиболее ожидаемое включение в пакет Selenium, который еще предстоит запустить на рынок. Selenium 3 настоятельно рекомендует мобильное тестирование.

В следующем руководстве мы обсудим основы Selenium IDE, ее установку и функции.Мы также хотели бы взглянуть на базовую терминологию и номенклатуру Selenium IDE.

Следующее руководство по Selenium: Введение в Selenium IDE и его установку с подробным изучением всех функций Selenium IDE (скоро)

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

Об авторах:
Шрути Шривастава (наш главный автор этой серии), Амареш Дхал и Паллави Шарма помогают нам донести эту серию до наших читателей.

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

.

Об автоматизации тестирования :: Документация по Selenium

Selenium

  • Начало работы

    • Краткий обзор
  • Введение

    • Проект и инструменты Selenium
    • Об автоматизации тестирования
    • Виды испытаний
    • Об этой документации
  • Установка селена

    • Установка библиотек Selenium
    • Установка двоичных файлов WebDriver
    • Установка автономного сервера
  • Начало работы с WebDriver

    • Браузеры
    • Сторонние драйверы и плагины
    • Установочные элементы
    • Выполнение действий на АВ *
  • WebDriver

    • Понимание компонентов
    • Требования к драйверам
    • Манипуляции с браузером
    • Ожидание
    • Классы поддержки
    • Предупреждения, подсказки и подтверждения JavaScript
    • Http прокси
    • Стратегия загрузки страницы
    • Веб-элемент
    • Клавиатура
  • Удаленный WebDriver

    • Удаленный сервер WebDriver
    • Клиент удаленного WebDriver
  • Указания

    • Страничные объектные модели
    • Язык домена
    • Создание состояния приложения
    • Макет внешних услуг
    • Улучшенная отчетность
    • Избегать совместного использования состояния
    • Независимость испытаний
    • Рассмотрите возможность использования свободного API
    • Свежий браузер за тест
  • Наихудшие практики

    • Captchas
    • Двухфакторная аутентификация
    • Загрузки файлов
    • Коды ответа HTTP
    • Gmail, электронная почта и Facebook
    • Тестовая зависимость
    • Тестирование производительности
    • Звездочка звена

.

Что такое селен? Начало работы с Selenium Automation Testing

Вы знаете, что такое Selenium? Вы хоть представляете, зачем он нужен? Если вы хотите получить ответ на эти два вопроса, подождите, пока вы не прочитаете все содержание этого блога, потому что вы будете рады, что потратили достойное количество времени на то, чтобы познакомить вас с тем, что может быть в основе вашей следующей должности.

Тестирование автоматизации завоевывает мир штурмом и Сертификация по селену — один из самых востребованных навыков в отрасли.

Что такое селен?

Selenium — это инструмент с открытым исходным кодом, который используется для автоматизации тестов, выполняемых в веб-браузерах (веб-приложения тестируются с использованием любого веб-браузера).

Подождите, прежде чем вы увлечетесь, позвольте мне повторить, что с Selenium возможно только тестирование веб-приложений. Мы не можем ни тестировать настольные (программные) приложения, ни тестировать мобильные приложения с помощью Selenium.

Это облом, правда? Я чувствую твою боль. Но не волнуйтесь, существует множество инструментов для тестирования программного обеспечения и мобильных приложений, таких как: IBM RFT, HP QPT, Appium и многие другие.Но основное внимание в этом блоге уделяется тестированию динамических веб-приложений и тому, почему Selenium лучше всего подходит для этой цели.

Какие преимущества у Selenium?

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

  • Тестовые сценарии могут быть написаны на любом из этих языков программирования: Java , Python , C # , PHP , Ruby , Perl и .Net
  • Тесты можно проводить в любой из этих ОС : Windows , Mac или Linux
  • Тесты можно проводить с помощью любого браузера: Mozilla Firefox , Internet Explorer , Google Chrome , Safari или Opera
  • Его можно интегрировать с такими инструментами, как TestNG и JUnit для управления тестовыми примерами и создания отчетов
  • Его можно интегрировать с Maven , Jenkins и Docker для достижения непрерывного тестирования

Но ведь наверняка есть недостатки, верно?

  • Мы можем использовать Selenium только для тестирования веб-приложений.Мы не можем тестировать настольные приложения или любое другое программное обеспечение.
  • Для Selenium нет гарантированной поддержки. Нам необходимо использовать доступные сообщества клиентов.
  • Невозможно выполнить тестирование изображений. Нам необходимо интегрировать Selenium с Sikuli для тестирования на основе изображений.
  • Нет собственного средства создания отчетов. Но мы можем решить эту проблему, интегрировав его с такими фреймворками, как TestNG или JUnit

. Прежде чем углубляться в этот блог what is Selenium , вам следует узнать историю появления Selenium таким, каким он является сегодня.Итак, давайте разберемся со сценарием в следующем порядке:

    1. Необходимость тестирования программного обеспечения
    2. Проблемы с ручным тестированием
    3. Чем автоматическое тестирование превосходит ручное тестирование?
    4. Селен против других инструментов тестирования?
    5. Набор инструментов Selenium

Необходимость тестирования программного обеспечения

Тестирование программного обеспечения — это то, к чему все сводится. В современном мире технологий полностью доминируют машины, и их поведение контролируется программным обеспечением, на котором они работают.Будут ли машины вести себя именно так, как мы хотим? Каждый раз? Везде? Ответ на эти вопросы лежит в тестировании программного обеспечения.

В конце концов, именно степень успеха программного приложения будет контролировать рост вашего бизнеса. То же самое можно сказать даже о веб-приложениях, потому что сегодня большинство предприятий полностью зависят от Интернета.

Возьмем, к примеру, любую интернет-торговую компанию. Будь то Amazon, E-Bay или Flipkart, они полагаются на трафик клиентов на своих веб-сайтах и ​​на трафик своих мобильных веб-приложений для бизнеса.

Представьте себе, если произойдет что-то катастрофическое, например, если цены на ряд продуктов будут ограничены до 10 долларов, все из-за небольшой ошибки в «не так легко читаемой» части кода. Тогда что можно сделать и как предотвратить это в следующий раз?

Проверяя код перед развертыванием, верно? Итак, это необходимость тестирования программного обеспечения. Но что такое селен? Это инструмент для тестирования программного обеспечения? Что ж, Selenium — это инструмент для автоматизации тестирования!

Прежде чем я продолжу, позвольте мне прояснить, что тестирование программного обеспечения бывает двух типов: ручное тестирование и автоматическое тестирование.Selenium был основан как инструмент автоматизации тестирования для преодоления недостатков / ограничений ручного тестирования. Итак, в следующем разделе этого блога, посвященного селену, давайте разберемся с проблемами ручного тестирования.

Проблемы с ручным тестированием

Ручное тестирование означает, что (веб) приложение тестируется вручную тестировщиками QA. Тесты необходимо выполнять вручную в каждой среде, используя разные наборы данных, и следует регистрировать процент успешных / неудачных попыток каждой транзакции.

Посмотрите на изображение выше бедного парня, который вручную проверяет записанные транзакции. Проблемы, с которыми он сталкивается, вызывают усталость, скуку, задержки в работе, ошибки и просчеты из-за ручного труда. Это привело к изобретению Selenium (инструмент автоматизации тестирования).

Автоматизация тестирования превосходит ручное тестирование

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

Давайте рассмотрим пример, аналогичный упомянутому ранее. Предположим, есть страница входа в систему, и нам нужно проверить, все ли попытки входа в систему были успешными, тогда будет очень легко написать фрагмент кода, который будет проверять, успешны ли все попытки транзакции / входа в систему или нет (автоматический тестовый пример исполнение).

Более того, эти тесты можно настроить таким образом, чтобы они тестировались в различных средах и веб-браузерах. Что еще можно сделать? Вы можете автоматизировать создание файла результатов, запланировав его на определенное время в течение дня.Затем вы также можете автоматизировать создание отчетов на основе тех и других результатов.

Ключевым моментом является то, что автоматическое тестирование значительно упрощает работу тестировщика. Посмотрите на изображение ниже, которое показывает более расслабленную среду, в которой работает тот же тестер.

Теперь позвольте мне поговорить о Selenium в частности.

Теперь давайте посмотрим, где находится Selenium на рынке.

Selenium vs QTP vs RFT

Я сравнил его производительность с двумя другими популярными инструментами: QTP и RFT в таблице ниже.

70 Исходный код

70 Требуется

70 Требуется

70

Функции HP QTP IBM RFT Selenium
Лицензия Требуется Высокая Программное обеспечение с открытым исходным кодом
Служба поддержки клиентов Специализированная поддержка HP Специализированная поддержка IBM Сообщество с открытым исходным кодом
Потребление оборудования во время выполнения сценария Высокая Низкая
Опыт программирования Не требуется Требуется Необходимы обширные навыки программирования и опыт
Поддержка среды Только для Windows Только для Windows Windows, Linux, Solaris OS X (если браузер и Поддерживается JVM или JavaScript) 9017 3
Поддержка языков VB Script Java и C # Java, C #, Ruby, Python, Perl, PHP и JavaScript

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

Selenium Suite Of Tools

  • Selenium RC (Сейчас не обесценивается)
  • Selenium IDE
  • Selenium Grid
  • Selenium WebDriver

Что входит в состав Selenium?

Ниже я подробно объяснил каждый из компонентов Selenium:

Selenium RC (Remote Control)

Прежде чем говорить о деталях Selenium RC, я хотел бы сделать шаг назад и поговорить о первый инструмент в проекте Selenium.Selenium Core был первым инструментом. Но Selenium Core оказался препятствием для междоменного тестирования из-за политики одинакового происхождения . Политика одинакового происхождения запрещает коду JavaScript доступ к веб-элементам, которые размещены в домене, отличном от домена, в котором был запущен JavaScript.

Чтобы решить проблему политики одного и того же происхождения, тестировщикам необходимо было установить локальные копии Selenium Core (программы JavaScript) и веб-сервера, содержащего тестируемое веб-приложение, чтобы они принадлежали к одному домену.Это привело к рождению Selenium RC, который был аккредитован инженером ThoughtWork , Полом Хаммантом .

RC преодолел эту проблему, задействовав прокси-сервер HTTP, чтобы «обмануть» браузер, заставив его поверить, что Selenium Core и тестируемое веб-приложение происходят из одного домена. Таким образом, RC стал двухкомпонентным инструментом.

  1. Selenium RC Server
  2. Selenium RC Clien t — Библиотека, содержащая код вашего языка программирования

RC Server взаимодействует с помощью простых запросов HTTP GET / POST.Посмотрите на изображение ниже, чтобы понять архитектуру RC.

Флагманским инструментом проекта Selenium был Selenium RC, поскольку это был их первый инструмент, и его можно было использовать для написания тестовых примеров на разных языках программирования. Но недостатком RC является то, что каждое взаимодействие с RC-сервером занимает много времени и, следовательно, RC очень медленный. Настолько медленно, что на выполнение отдельных тестов иногда уходили часы.

Начиная с Selenium v3, RC был заменен на устаревший пакет.Однако вы можете загрузить RC и работать с ним, но, к сожалению, вы не можете воспользоваться его поддержкой. Но с другой стороны, зачем вам использовать устаревший инструмент, особенно когда есть более эффективный инструмент под названием Selenium WebDriver. Прежде чем говорить о WebDriver, позвольте мне обсудить IDE и Grid, которые являются другими инструментами, составляющими Selenium v1.

Selenium IDE (интегрированная среда разработки)

В 2006 году Shinya Kastani из Японии пожертвовал свой прототип Selenium IDE проекту Apache Selenium.Это был плагин Firefox для более быстрого создания тестовых примеров. В IDE реализована модель записи и воспроизведения, в которой тестовые примеры создаются путем записи взаимодействий пользователя с веб-браузером. Затем эти тесты можно воспроизвести любое количество раз.

Преимущество Selenium IDE заключается в том, что тесты, записанные с помощью подключаемого модуля, можно экспортировать на различных языках программирования, таких как: Java, Ruby, Python и т. Д. Посмотрите на приведенный ниже снимок экрана подключаемого модуля Firefox IDE.

Но связанные с этим недостатки IDE:

  • Подключаемый модуль доступен только для Mozilla Firefox; не для других браузеров
  • Невозможно тестировать динамические веб-приложения; могут быть записаны только простые тесты.
  • Тестовые случаи не могут быть написаны с использованием логики программирования.
  • Не поддерживает тестирование, управляемое данными.

Это были некоторые аспекты Selenium IDE.Теперь позвольте мне поговорить о Selenium Grid.

Что такое Selenium Grid

Selenium Grid был разработан Patrick Lightbody и первоначально назывался HostedQA (изначально был частью Selenium v1) и использовался в сочетании с RC для запуска тестов на удаленных машинах. Фактически, с помощью Grid несколько тестовых сценариев могут выполняться одновременно на нескольких машинах.

Параллельное выполнение достигается с помощью архитектуры Hub-Node. Одна машина возьмет на себя роль концентратора, а другие — узлов.Hub контролирует тестовые сценарии, запущенные в различных браузерах в различных операционных системах. Тестовые скрипты, выполняемые на разных узлах, могут быть написаны на разных языках программирования.

Grid все еще используется и работает как с WebDriver, так и с RC. Однако поддерживать сетку со всеми необходимыми браузерами и операционными системами является сложной задачей. Для этого существует несколько онлайн-платформ, которые предоставляют онлайн-сетку Selenium Grid, к которой вы можете получить доступ для запуска своих сценариев автоматизации Selenium.Например, вы можете использовать LambdaTest . Он имеет более 2000 браузерных сред, в которых вы можете запускать свои тесты и действительно автоматизировать кросс-браузерное тестирование.

Что такое Selenium WebDriver

Основанная Саймоном Стюартом в 2006 году, Selenium WebDriver была первой межплатформенной средой тестирования, которая могла управлять браузером на уровне ОС. В отличие от IDE, Selenium WebDriver предоставляет программный интерфейс для создания и выполнения тестовых примеров.Тестовые примеры написаны таким образом, что веб-элементы на веб-страницах идентифицируются, а затем над этими элементами выполняются действия.

WebDriver — это обновление до RC, потому что оно намного быстрее. Это быстрее, потому что он напрямую обращается к браузеру. RC, с другой стороны, нуждается в RC-сервере для взаимодействия с веб-браузером. У каждого браузера есть собственный драйвер, на котором работает приложение. Различные WebDrivers:

  • Драйвер Firefox (Драйвер Gecko)
  • Драйвер Chrome
  • Драйвер Internet Explorer
  • Драйвер Opera
  • Драйвер Safari и
  • Драйвер устройства HTM
Преимущества Selenium WebDriver
  • Поддержка для 7 языков программирования: JAVA, C #, PHP, Ruby, Perl, Python и.Сеть.
  • Поддерживает тестирование в различных браузерах, таких как: Firefox, Chrome, IE, Safari
  • Тесты могут выполняться в разных операционных системах, таких как: Windows, Mac, Linux, Android, iOS
  • Преодолевает ограничения Selenium v1, такие как загрузка файлов, загрузка, всплывающие окна и диалоги барьер
Недостатки Selenium WebDriver
  • Невозможно сгенерировать подробные отчеты об испытаниях
  • Невозможно тестирование изображений

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

Итак, вывод из этого блога о том, что такое Selenium. Чтобы узнать больше о Selenium WebDriver и TestNG, прочтите другие блоги в этой серии учебников по Selenium. Вы также можете посмотреть видео ниже, представленное отраслевым экспертом, где она поделилась своим мнением о Selenium как инструменте автоматизации тестирования.

Что такое селен? | Selenium Tutorial | Selenium Training | Edureka

Этот блог «Что такое селен» является первым в серии учебных блогов по Selenium.Следите за новостями на сайте блога Edureka, чтобы увидеть больше блогов о Selenium.

Если вы хотите изучить Selenium и построить карьеру в области тестирования, ознакомьтесь с нашим интерактивным онлайн-курсом по сертификации Selenium, который включает круглосуточную поддержку, которая поможет вам на протяжении всего периода обучения.

Есть вопросы? Пожалуйста, укажите это в комментариях к статье What is Selenium, и мы свяжемся с вами.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *