Selenium WebDriver

Selenium Webdriver - это инструмент для автоматизации действий веб-браузера. Версия Selenium Webdriver 2.0. работает по принципу обращения к командам браузера взаимодействуя через API конкретного браузера. Предыдущая версия Selenium RC Webdriver (Selenium Webdriver 1.0.) использовала для работы внедрение javascript в код браузера для управления действиями, что менее соответствует реальным действиям пользователя.
Первая версия Selenium состояла из IDE, RC и Grid. Позже туда был добавлен Selenium Webdriver и версия была названа Selenium WebDriver v2.0. Когда была выпущена версия Selenium Webdriver 3.0 , то RC был признан устаревшим и перемещен в соответствующий пакет.

WebDriver довольно обширно интегрировался со многими языками программирования, на сегодняшний момент он поддерживается C #, Java, Perl, PHP, Python и Ruby и его можно запускать в самых используемых на сегодняшний день браузерах.
Для интеграции WebDriver-а с браузерами необходимо использовать драйверы браузеров, за исключением Firefox поскольку он использует встроенную реализацию. Наиболее используемые драйверы:
• Драйвер Google Chrome
• Драйвер Internet Explorer
• Драйвер Opera
• Драйвер Safari
• Драйвер HTML-модуля (запуск драйвера без запуска браузера)
Selenium WebDriver - Архитектура
Selenium WebDriver API осуществляет взаимодействие между языками программирования и
браузерами.
Схематично архитектурное представление Selenium WebDriver выглядит так:

Языковые привязки / Клиентские библиотеки
Для выполнения поддержки нескольких языков программирования, Selenium использует языковые привязки либо клиентские библиотеки. Например, в случае если применяется драйвер браузера в java, используется привязка java.
Протокол JSON Wire
JSON (JavaScript Object Notation) - это текстовый формат обмена данными, основанный на JavaScript, который легко обрабатывается и генерируется программами.
JSON Wire Protocol представляет собой транспортный механизм для передачи данных между сервером и клиентом. Протокол JSON Wire является отраслевым стандартом для различных веб-сервисов REST.
Драйверы браузера
Selenium, в целях установки безопасного соединения, использует свои специальные драйверы для каждого браузера. При этом, когда выполняется тестовый скрипт, совершаются следующие операции:
• HTTP-запрос генерируется и отправляется драйверу браузера для каждой
команды Selenium
• Драйвер получает HTTP-запрос через HTTP-сервер
• HTTP-сервер решает все шаги для выполнения инструкций, которые
выполняются в браузере
• Статус выполнения отправляется обратно на HTTP-сервер, который затем
отправляется обратно сценарию автоматизации
Особенности Selenium WebDriver
• Поддержка нескольких браузеров: Mozilla Firefox, Google Chrome, Internet
Explorer, Opera, Safari, в том числе редкие браузеры, такие как HTMLUnit

• Языки программирования (Java, C#, JavaScript, PHP, Ruby, Pearl, Python).
Пользователь может выбрать любой из языков программирования в зависимости от своей
компетенции и приступить к созданию тестовых сценариев
• Скорость: WebDriver работает быстрее по сравнению с другими инструментами Selenium Suite.

В отличие от RC, он не требует никакого промежуточного сервера для связи с браузером; скорее инструмент напрямую взаимодействует с браузером.
• Простота: большинство команд, используемых в Selenium WebDriver, легко реализовать. Например, для запуска браузера в WebDriver используется следующая комбинация:
WebDriver driver = new FirefoxDriver(); (Firefox browser )
WebDriver driver = new ChromeDriver(); (Chrome browser)
WebDriver driver = new InternetExplorerDriver(); (Internet Explorer browser)
• WebDriver - методы и классы: WebDriver позволяет тестировщикам иметь дело со сложными типами веб-элементов, чекбоксы, дропдауны и алерты с помощью динамических средств поиска.
