selenium что это за программа
Использование Selenium сервера для автоматизации работы с внешними ресурсами
Время чтения: 6 минут
Отправим вам статью на:
Прочитав заглавие статьи, Вы, наверняка, зададитесь вопросом «А зачем это нужно?» с последующими утверждениями, что «это же медленно!», да и вообще «это же совсем не целевое использование такого замечательного средства для тестирования как Selenium server». Всему свое время и, в этой небольшой статье я попытаюсь ответить на ваши вопросы.
Начнем с того, что кратко расскажем, что же такое Selenium и для чего он нужен. Главным образом Selenium — это инструмент для автоматизации тестирования Web-приложений, как проект был начат в июне 2004 года и на текущий момент включает несколько инструментов. В совокупности набор инструментов Selenium предоставляет богатый набор возможностей для тестирования Web-приложений различных типов. Ключевыми особенностями Selenium является возможность запуска в различных браузерах и использование нескольких типов селекторов для идентификации элементов страницы (например, XPath или CSS селекторы).
Набор инструментов Selenium
Selenium включает несколько инструментов с разным назначением:
Selenium 2 (или Selenium Webdriver)
Новое направление развития проекта Selenium: результат слияния двух проектов WebDriver и Selenium1. Каждый из этих продуктов обладал своими достоинствами, поэтому разработчики пришли к мысли слияния проектов для получения более надежного и развитого инструмента автоматизации.
Selenium 1 (или Selenium Remote Control)
На протяжении длительного времени Selenium RC был основным направлением развития проекта, пока в результате слияния WebDriver и Selenium не появился Selenium 2, более новый и мощный инструмент, однако Selenium 1 все еще активно поддерживается.
Selenium IDE
Представляет собой инструмент для разработки и создания прототипов тестовых сценариев. Это плагин для браузера Firefox, с простым и удобным интерфейсом для создания автоматизированных тестов.
Selenium Grid
Selenium Grid позволяет масштабировать большие тестовые наборы, а также запускать тесты, которые необходимо выполнить в нескольких окружениях. Selenium Grid позволяет запускать тесты параллельно, то есть разные тесты могут быть запущены в одно и то же время на нескольких удаленных машинах.
Использование Selenium не в целях тестирования в реальном проекте
В качестве примера рассмотрим реальный проект по реализации одной крупной Web-системы, которая должна была взаимодействовать с большим количеством внешних ресурсов. О внутренней структуре и организации сторонних ресурсах мы ничего не знаем, хотя спокойно можем создать в них новый аккаунт или можем использовать уже существующий с помощью предоставляемого web-интерфейса. Реализуемая система кроме этого представляла собой «агрегатор аккаунтов» сторонних ресурсов и способна была выполнять определенный набор операций над ними. По большей степени набор операций был одинаков для всех сторонних ресурсов. Операции выполнялись с помощью использования предоставляемого ресурсом API, но при добавлении очередного ресурса в систему разработчики столкнулись с проблемой ограниченности и недостаточности API, кроме того некоторые ресурсы не предоставляли ровным счетом никакого API, а включить их в создаваемую систему было просто необходимо.
Таким образом, одни ресурсы предоставляли довольно хорошую реализацию API, с полным набором необходимых методов, другие же либо имели скудное API с ограниченными возможностями, либо не имели его вообще. Кроме этого, предоставляемое ресурсами API зачастую имело разный интерфейс и требовало использование дополнительных специфических библиотек, включение которых в проект, значительно увеличивало его размер, поэтому говорить о каком-то стандартном методе использования API речи и не шло. Единственный вариант общей реализации в этом случае заключался в имплементации набора адаптеров для каждого нового ресурса.
Поэтому возникла идея использования «Selenium-подхода». Действительно, мы ведь можем сымитировать действия пользователя на стороннем ресурсе. Запустить реальный браузер, забить значения в поля, сделать необходимую цепочку переходов и выйти из аккаунта.
Конечно, вы скажете, что можно анализировать и разбирать запросы. Зачем поднимать сервер для этого? Это же медленно! Гораздо проще проанализировать пары каждого запроса в цепочке переходов и реализовать их с помощью какой-нибудь CURL-based библиотеки на сервере. Ответ будет довольно простым, из личного опыта разработчиков системы следует вывод: во-первых, разработка в этом случае затягивается, по причине довольно сложных запросов и ответов, средств защиты, например:
Во-вторых, внешние ресурсы часто что-то меняют, и оперативно внести изменения в реализуемую систему гораздо проще и быстрее в случае «Selenium»-подхода, чем в “переанализе» request/response-пар.
Итак, подытожим причины:
Но что же со временем и стабильностью исполнения, скажете вы? Единственное действительно уязвимое место данного подхода. Использование данного подхода имеет смысл для автоматизации действий, не критичных ко времени исполнения, возможно, массовые действия с использованием очереди. Время исполнения той или иной операции с использованием Selenium-подхода всегда можно оптимизировать, как это было сделано и в реализуемой системе. Что касается стабильности, то ее тоже довольно легко можно вывести на приемлемый уровень путем реализации дополнительных компонент, направленных на увеличение стабильности работы с Selenium-сервером, занимающихся мониторингом процессов, так или иначе связанных с работой Selenium-сервера. Кроме того, в сети можно найти большое количество статей о том, как ускорить работу Selenium-сервера.
Установка и настройка Selenium-сервера
Рассмотрим на примере CentOS последовательность шагов по установке и настройке Selenium-сервера, с последующим его использованием в PHP:
Качаем Selenium (версия может отличаться на момент развертывания сервера):
Пишим скрипт загрузки (прилагаться не будет):
Не забудьте параметры, необходимые для полноценного использования Selenium-сервера:
Ставим браузер (рекомендации: лучше google chrome, не забудьте сперва добавить репу /etc/yum.repos.d/google.repo):
Возможно вам придется добавить WebDriver для браузера Google Chrome:
Добавляем возможность работы с Selenium-сервером из PHP:
Итог
Использование Selenium сервера для автоматизации действий пользователя не в целях тестирования имеет смыл в проектах, не критичных ко времени исполнения. Очевидные плюсы заключаются в простоте разработки и внесении изменений — не нужно анализировать каждый запрос. Отличное «расширение» существующего API до требуемого уровня 😉
Подпишитесь
Оставьте адрес, и каждый месяц мы будем высылать свежую статью
о новых трендах в разработке програмного обеспечения.
Selenium для Python. Глава 1. Установка
Представляю перевод неофициальной документации Selenium для Python.
Перевод сделан с разрешения автора Baiju Muthukadan.
Оригинал можно найти здесь.
Предисловие от автора статьи
Selenium WebDriver – это программная библиотека для управления браузерами. WebDriver представляет собой драйверы для различных браузеров и клиентские библиотеки на разных языках программирования, предназначенные для управления этими драйверами.
По сути своей использование такого веб-драйвера сводится к созданию бота, выполняющего всю ручную работу с браузером автоматизированно.
Чаще всего Selenium WebDriver используется для тестирования функционала веб-сайтов/веб-ориентированных приложений. Автоматизированное тестирование удобно, потому что позволяет многократно запускать повторяющиеся тесты. Регрессионное тестирование, то есть, проверка, что старый код не перестал работать правильно после внесения новых изменений, является типичным примером, когда необходима автоматизация. WebDriver предоставляет все необходимые методы, обеспечивает высокую скорость теста и гарантирует корректность проверки (поскольку человеский фактор исключен). В официальной документации Selenium приводятся следующие плюсы автоматизированного тестирования веб-приложений:
Также одной из незаменимых особенностей Selenium WebDriver является ожидание загрузки страницы. Сюда можно отнести случаи, когда парсинг данных на странице невозможен из-за страниц перенаправления или ожидания, содержащих примерно такой текст: «Подождите, страница загружается». Такие страницы, само собой разумеется, не является целью парсинга, однако обойти их часто не представляется возможным. Естественно, без Selenium WebDriver. Selenium WebDriver позволяет в таких случаях «ожидать», как ожидал бы человек, пока на странице, к примеру, не появится элемент с необходимым именем.
Еще один плюс Selenium заключен в том, что действия веб-драйвера видимы визуально и требуют минимального времени нахождения на странице, это позволяет с удобством демонстрировать функционал сайта, когда необходима презентация сервиса.
Некоторые проблемы WebDriver (из сети и личного опыта):
Содержание:
1. Установка
1.1. Введение
Привязка Selenium к Python предоставляет собой простой API [Интерфейс программирования приложений (англ. Application Programming Interface) — Прим. пер.] для написания тестов функциональности/тестов соответствия требованиям с использованием веб-драйвера Selenium WebDriver. С помощью Selenium Python API вы можете интуитивно просто получить доступ ко всему функционалу Selenium WebDriver.
Привязка Python-Selenium предоставляет удобный API для доступа к таким веб-драйверам Selenium как Firefox, Ie, Chrome, Remote и других. На данный момент поддерживаются версии Python 2.7, 3.2, 3.3 и 3.4.
В данной документации рассмотрен Selenium 2 WebDriver API. Selenium 1 / Selenium RC API в ней не охвачены.
1.2. Загрузка Selenium для Python
Для создания изолированной среды Python вы можете использовать virtualenv. Также библиотека Python 3.4 содержит модуль pyvenv, который практически аналогичен virtualenv.
1.3. Подробная инструкция для пользователей Windows
Примечание
Для данной инсталляции вам необходим доступ к сети Интернет.
1.4. Загрузка Selenium server
Примечание
Selenium server необходим в случаях, когда вы хотите использовать remote WebDriver [удаленный — Прим. пер.]. За дополнительной информацией обращайтесь к разделу Использование Selenium с remote WebDriver. Если вы только начинаете изучать Selenium, вы можете пропустить этот раздел и продолжить изучение со следующей главы.
Selenium server написан на языке Java. Для его запуска рекомендована среда Java Runtime Environment (JRE) версии 1.6 или выше.
Вы можете скачать Selenium server 2.x на странице загрузок сайта selenium. Имя файла должно выглядеть примерно таким образом: selenium-server-standalone-2.x.x.jar. Вы всегда можете загрузить последнюю версию Selenium server 2.x.
Если Java Runtime Environment (JRE) не установлена в вашей системе, вы можете скачать JRE с сайта Oracle. Если вы используете системы GNU/Linux и имеете права root [права администратора — Прим. пер.], вы так же можете установить JRE, используя инструкции вашей системы.
Если команда java доступна в PATH (переменная окружения), вы можете запустить Selenium server используя следующую команду:
Замените 2.x.x актуальной версией Selenium server, скачанной вами с сайта.
Если JRE установлена под пользователем, не обладающим правами root и/или если она недоступна в переменной окружения PATH, вы можете ввести относительный или полный путь до файла java. Аналогично, вы можете дополнить имя jar-файла Selenium server до относительного или полного пути. После этого команда будет выглядеть так:
DevPoint: Selenium в тестировании веб-приложений
С такими ситуациями очень часто сталкивался и меня это не устраивало. При поиске подходящего метода/инструмента тестирования я наткнулся на Selenium. И применяю его уже более 3-х лет.
В Киеве 9-го апреля прошла конференция DevPoint, посвященная web — разработке. Организатором данного мероприятия была компания Uniweb. В рамках ее, решил поделиться впечатлением про Selenium.
Selenium состоит из множества подпроектов, но выделить хотел только три:
Selenium Core — JavaScript Framework для написание и выполнения тестов. Используется в Selenium IDE и Remote Control*.
Selenium IDE — плагин для Firefox, который позволяет записывать и воспроизводить тесты. Также может генерировать код тестов для использования в Selenium Remote Control.
Selenium Remote Control — клиент-серверная система, которая позволяет Вам управлять веб-браузерами локально, или на других компьютерах, используя практически любой язык программирования
В рамках этого доклада про Selenium Core не было времени акцентировать внимание, хотя этот проект наиболее интересен для написания тестов с нетривиальной логикой.
Selenium IDE
Применяем Selenium IDE на практике
Для примера взял живой старый проект, который покрыть тестами задача еще та. Это обычный интернет-магазин, который используется для внутренних оптовых закупок в одной компании, имен не называем…
Первый тест, который мы напишем будет просто авторизоваться в системе:
И последних два теста, которые покрывают логику создания и редактирования заказа:
И для проверки наших тестов было намерено испорчено сохранение заказа:
Selenium Remote Control
Selenium Remote Control — это http демон, который принимает команды через GET и выполняет их. API по общению с Selenium RC есть почти под все языки программирования. В данном докладе речь идет только про API для PHP, которое предоставляется c PHPUnit
Как уже говорилось ранние в Selenium IDE есть приятная опция по генерированию кода для *Unit:
Таким образом вы можете просто копировать код и выполнять его в своих PHPUnit suite.
Также в PHPUnit — Selenium есть возможность запускать тесты написанные в Selenium IDE:
Без напильника не обойтись…
Для решения проблемы с выполнением команд wait* нужно рассмотреть как они выполняются в PHPUnit:
Фактически мы зацикливаем выполнение команды, на определенный интервал и ждем пока наше условие не станет true. Реализация PHPUnit — Selenium посылая команду Selenium RC ждет от нее только два ответа, что все хорошо или что все плохо. Если пришел ответ ERROR, то он сразу закрывает браузер, пишет что произошла ошибка и соответственно наш цикл будет слать команды в уже закрытую сессию Selenium RC.
Код с решением этих проблем я выложил на github и не буду на нем останавливаться.
Еще из приятных вещей в Selenium RC то, что он умеет делать скриншоты при обнаружении ошибки:
Минус в том, что на скриншотах не подсвечивается место возникновения ошибки, но по тексту в PHPUnit обычно легко понять что не так.
Дергаем за ниточки не FireFox
Селениум: тестирование веб-приложений и другие полезные функции
Selenium — это не одиночный инструмент, как многие считают по ошибке. Селениум — это целый набор разношерстного инструментария, который решает задачи разного уровня по тестированию. Поэтому если говорить о Селениуме, то нужно коснуться всего набора инструментов.
Селениум: набор инструментов
Selenium IDE — это специализированный плагин для FireFox, который дает тестировщикам возможность проводить запись своих действий для будущего анализа. Он способен разработать тестовые случаи, но только в «Огненной Лисе», так как другие браузеры он не поддерживает. При этом записанные сценарии тестирования можно конвертировать в другие языки программирования, чтобы выполнить их в других браузерах. Это простой в использовании плагин. Он не требует для тестирования глубоких знаний языков программирования, так как способен сам остоятельно сформировать нужный код.
Selenium RC — это полноценная среда для тестирования, которая дает возможность применять популярные языки программирования: Java, C#, PHP, Python, Ruby, PERL и другие. Данная среда уже практически не применяется и не рекомендуется для использования.
Selenium WebDriver — это среда для тестирования, которая пришла заменить Selenium RC. По сути, WebDriver — это несколько специальных библиотек для разных языков программирования, которые можно применять для написания программ для управления браузером. Это свободный набор библиотек, поэтому их можно использовать в разных браузерах. Selenium WebDriver позволяет создать собственный фреймворк для тестирования.
Selenium Grid — это крутой инструмент, который позволяет одновременно запускать по несколько тестов на разных устройствах или разных браузерах, что ускоряет сам процесс тестирования.
Особенности инструментов Селениум
Каждый из существующих на рынке инструментов имеет свои особенности, что отличает один инструмент от другого. Набор инструментов Селениум имеет свои особенности:
Открытый исходный код.
Расширяет свои возможности при подключении дополнительных технологий.
Работает с разными браузерами.
Работает с разными операционными системами.
Функционирует на мобильных устройствах.
Проводит тестирования прямо в браузере.
Можно проводить тестирования на разных устройствах одновременно, применяя Selenium Grid.
Недостатки набора инструментов Селениум
У Селениум есть свои недостатки:
Тестирует только веб-приложения.
Отсутствуют сценарии восстановления и хранилище объектов.
Нет полноценной IDE.
Не дает возможность контролировать элементы управления в браузере.
По умолчанию не генерирует отчеты о тестировании.
Заключение
Селениум идеально подойдет для тех, кто уже устал все тестировать «руками», потому что Selenium — это эффективный набор инструментов для автоматизации тестирования.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Selenium что это за программа
Что пишут в блогах
Привет! В блоге появляется мало новостей, потому что все переехало в telegram.
Стоимость в цвете — 2500 рублей самовывозом (доставка еще 500-600 рублей, информация по ней будет чуть позже)
Заказать — https://shop.testbase.ru/buy/book. Пока самовывоз (см ниже где и когда!!). С почтой разберемся чуть позже.
Онлайн-тренинги
Что пишут в блогах (EN)
Разделы портала
Про инструменты
В мире автоматизации новичку ориентироваться довольно сложно. Приходится узнавать множество понятий, разбираться в особенностях существующих инструментов. Например, вот: Selenium, Selenide, Selenoid, Selendriod — что это, чем отличается? Да и можно ли их сравнивать?
Написал статью, чтобы помочь в этом разобраться. Кому интересно, добро пожаловать под кат!
Selenium
Selenium — это инструмент для автоматизированного управления браузерами.
В рамках проекта Selenium разрабатывается серия программных продуктов с открытым исходным кодом:
Selenium Server – это программа, которая позволяет управлять браузерами с помощью специальных драйверов. Она должна находиться на том же компьютере, что и браузер, с которым нам предстоит работать.
После установки Selenium Server к нему можно обращаться с другого компьютера для удаленного управления браузерами по специальному протоколу, который написан поверх HTTP.
Коротко — Selenium Server помогает управлять браузерами на определенной машине.
Более подробно можно почитать здесь: https://www.seleniumhq.org/
Selenium Grid устанавливается на одном компьютере и может работать удаленно с несколькими другим, на которых установлены Selenium Server.
Он создан для того, чтобы запускать тесты на большом количестве машин, обращаясь только к одной, на которой установлен Selenium Grid.
Для создания сессии (т.е. запуска браузера) мы всегда будем приходить на компьютер, где стоит Selenium Grid. Он уже сам решит, какая машина менее нагружена для этого и туда и перенаправит команду.
Все машины, с которыми работает Selenium Grid, могут работать под управлением разных операционных систем, на них могут быть установлены разные браузеры.
Коротко — Selenium Grid нужен для организации работы с несколькими машинами, где установлен Selenium Server.
Selenium IDE – это плагин к браузеру Firefox, с помощью которого можно записывать и воспроизводить действия пользователя.
Он не имеет особого отношения ни к Selenium Server, ни к Selenium Grid и позволяет работать только с локальным браузером.
Selenide
Selenide — это один из фреймворков для автоматизированного тестирования веб-приложений. С его помощью можно быстро и относительно просто писать код, который будет формировать и отправлять HTTP-команды на Selenium Server или Selenium Grid.
Он заточен под то, чтобы писать такие сценарии, которые будут проверять работу веб-приложения: поиск нужных элементов, проверка событий, взаимодействие с UI и так далее.
Несмотря на схожесть названия с линейкой программ Selenium, сам Selenide разрабатывают другие ребята.
Коротко — с Selenide проще писать код, который заточен именно под тестирование веб-приложения.
Более подробно можно почитать здесь: https://ru.selenide.org/
Selenoid
Selenoid — это программа, которая позволяет управлять браузерами и Android-эмуляторами с помощью специальных драйверов. Умеет запускать каждый из них изолированно в Docker-контейнере.
Selenoid представляет собой альтернативное решение Selenium Server, хотя суть та же — организация работы драйверов.
Основная идея Selenoid состоит в том, чтобы запускать новый контейнер для каждой сессии (запуска нового браузера или эмулятора) и останавливать его сразу же после закрытия сессии.
Selenoid позволяет поддерживать высокую нагрузку без дополнительных ресурсозатрат.
Selendroid
Selendroid — это фреймворк для автоматизированного тестирования мобильных приложений на базе Android.
Используется на ранних версиях Android — до 17 level api (android 4.2). Но не выше.
Коротко — это уже не очень актуальные фреймворк для работы с Android-приложениями.
Более подробно можно почитать здесь: http://selendroid.io
Итого
Инструментов много, каждый предназначен для своих задач. Постарался коротко и без воды рассказать про группу Selen-проектов. 🙂
Если такой формат будет интересен, далее сделаю обзор на инструменты для мобильной автоматизации.