Сегодня для каждого бизнеса требуется высококачественное программное обеспечение в сжатые сроки, чтобы достигнуть этого организациям необходимо проводить эффективное тестирование программ с помощью автоматизации. С развитием agile и DevOps методологий автоматизация тестирования программного обеспечения достигает новых высот. Процесс автоматизации тестирования ускоряется при помощи повторного использования тест-сьютов, также существует множество фреймворков, используемых QA-тестировщиками . Несмотря на то, что существует множество фреймворков автоматизации, одним из наиболее распространенных является Selenium. Различные версии Selenium, выпущенные на рынок: Selenium 1 (Selenium RC), Selenium 2, Selenium 3 и  обновленная бета-версия Selenium 4. Selenium занимает заметное место в мире автоматизированного тестирования благодаря открытому исходному коду и многочисленным функциям, которые ускоряют процесс тестирования по сравнению с другими инструментами. Selenium - это наиболее предпочтительный набор инструментов, используемый для автоматизации тестирования веб-приложений. Он способен работать в различных браузерах и операционных системах. Selenium - это набор средств автоматизации тестирования, который состоит из различных компонентов, приведенных ниже: Selenium Core Selenium RC Selenium IDE Selenium Grid Selenium Webdriver Selenium 2 и Selenium 3 применяются уже много лет, и имеют различия, представленные в таблице ниже. Основные различия между Selenium 2 и Selenium 3 Selenium 2 Selenium 3 Selenium 2 поддерживает Selenium WebDriver и Selenium RC (Selenium 1). Он использует Selenium Core для обратной совместимости.     Selenium 3 поддерживает Selenium Grid и Selenium WebDriver. Selenium Core удалено. Поддерживает Selenium RC косвенно через внутренний веб-драйвер. Firefox - браузер по умолчанию. Поддерживаются версии Firefox ниже 47.0.2  Для Firefox был представлен отдельный драйвер, который называется GeckoDriver. Он поддерживает версии 47.0.2 и выше. Поддерживает “безголовый” браузер HTMLUnit  Не поддерживает “безголовый” браузер HTMLUnit Не является стандартом W3C (World Wide Web Consortium)  Стал стандартом W3C (World Wide Web Consortium) Поддерживает и автоматизирует мобильные приложения с помощью AndroidDriver и iPhoneDriver.     Поддержка мобильной автоматизации удалена, т.е. AndroidDriver и iPhoneDriver были убраны из библиотеки Selenium WebDriver. Для автоматизации мобильного тестирования можно использовать такие инструменты, как Appium Selenium 4 Beta 1 - последняя версия Selenium, которая была выпущена 15 февраля 2021 года. В этом новом наборе инструментов есть такие расширенные возможности, как Selenium Grid, соответствие W3C, усовершенствованная IDE, новые API и многое другое. Selenium 4 - набор инструментов, в который входят различные компоненты, приведенные ниже: Selenium WebDriver - Это API с открытым исходным кодом, который позволяет создавать надежные комплекты автоматизации регрессии на основе браузера, тестировать, масштабировать и распространять скрипты во многих средах. WebDriver также позволяет взаимодействовать с браузером, как настоящий пользователь. Selenium IDE - Это дополнение для Chrome и Firefox, которое просто записывает и воспроизводит взаимодействие пользователя с браузером. Selenium Grid - Позволяет экономить время, распределяя и запуская тесты на нескольких браузерах, операционных системах и машинах. Он позволяет управлять несколькими средами из одной центральной точки. В чем разница между Selenium 3 и Selenium 4? Как правило, между Selenium 3 и Selenium 4 есть несколько существенных различий, перечисленных ниже: Selenium 3 Selenium 4 В Selenium 3 драйвер chrome расширяется непосредственно до Remote Web Driver. В Selenium 4 класс драйвера Chrome расширяется до Chromium Driver, который имеет некоторые предустановленные методы для доступа к инструменту разработчика. В Selenium 3 протокол JSON Wire Protocol был основным способом связи между тестовым кодом и браузером. В Selenium 4 используется протокол WebDriver W3C, поскольку он соответствует требованиям W3C. Сложной задачей в Selenium 3 было то, что тестировщики должны были каждый раз запускать файлы Java-архивов (jar-ы) хаба (Hub) и узла (Node) для выполнения автоматизированного тестирования на Grid.     В Selenium 4 тестировщикам не нужно запускать jar-ы Hub и Node каждый раз, когда они выполняют автоматизированное тестирование. Каковы новые возможности Selenium 4? 1. WebDriver стал стандартом W3C (World Wide Web Consortium): Selenium WebDriver теперь соответствует стандарту W3C, и предоставляет дружественный и гибкий API для автоматизации браузера. Стандарт W3C способствует совместимости различных программных имплементаций WebDriver и API. Большинство стандартов W3C крутятся вокруг стандартизации веб-технологий, делая систему более стабильной и облегчая работу браузеров. 2. Selenium Grid дополнен обновлениями: Ранние версии Selenium Grid были сложными, поскольку они были основаны на архитектуре Hub и Node(s). Во время выполнения тестов автоматизации Hub и Node(s) должны быть запущены отдельно. В Selenium 4 Hub и Node (s) упакованы в один jar-файл, это означает, что после запуска сервера он одновременно выполняет функции Hub и Node. Grid также поддерживает адреса IPV6, что позволяет пользователям общаться с Grid по стандарту HTTPS с помощью TLS-соединений. Selenium Grid имеет более масштабируемую и отслеживаемую инфраструктуру, которая поддерживает четыре процесса: Router, Session Map, Distributor и Node. Новый Selenium Grid поставляется с поддержкой Docker, что позволяет тестировщикам и разработчикам запускать контейнеры, а не устанавливать тяжеловесные виртуальные машины. Эта функция предоставляет пользователям возможность для более гибкого развертывания Selenium Grid на Kubernetes. Selenium Grid 4 способен благотворно повлиять на процесс DevOps, поскольку он поддерживает такие инструменты, как AWS, Azure и другие. 3. Обновление Selenium 4 IDE: Selenium IDE - это инструмент записи и воспроизведения, который был доступен в качестве дополнения для Firefox в ранних версиях Selenium, но утратил свою актуальность, поскольку последние версии Firefox были стандартизированы в соответствии с механизмом веб-расширений. В Selenium 4 он доступен в качестве дополнения для основных веб-браузеров, таких как Firefox, Chrome, MS Edge и др. Последнее обновление имеет интуитивно понятный пользовательский интерфейс, а также поставляется с инструментом SIDE, то есть Selenium IDE runner, который позволяет QA специалистам (QA) запускать проекты на платформе node.js. Эта функция позволяет QA-командам запускать кросс-браузерные тесты на локальной или облачной Selenium Grid. Она имеет усовершенствованный механизм потока управления, который позволяет тестировщикам писать лучшие условия "while" и "if". Еще одна особенность - код тестовых примеров, записанных с помощью обновленной Selenium IDE, может быть экспортирован в нужный язык программирования, такой как Java, C#, Python, .NET и JavaScript, что открывает перед тестировщиками дополнительные возможности. 4. Относительные локаторы для сценариев автоматизации В Selenium 4 появился простой способ определения местоположения элементов благодаря включению относительных локаторов. Относительные локаторы, также называемые дружественными локаторами, помогают размещать Web-элементы рядом, слева, справа, выше и ниже указанного элемента. Поддерживается использование функции withTagName (в Selenium 4 Java) или with_tag_name (в Selenium 4 Python). Он помогает находить веб-элементы на основе визуального расположения относительно других элементов DOM. 5. Протокол отладки Chrome (CDP) Selenium 4 обеспечивает нативную поддержку протокола Chrome DevTools Protocol (CDP) через интерфейс DevTools. Он позволяет QA использовать такие свойства разработки Chrome, как Fetch, Network, Profiler, Performance, Application cache и другие. Эта функция помогает разработчикам и QA быстрее и на лету тестировать и устранять критические ошибки для конкретных веб-страниц. QA-команды также могут использовать API, предлагаемые Chrome DevTools, для моделирования плохих сетевых условий и проведения геолокационного тестирования. Эта функция также позволяет тестировщикам проверить работу продукта в изменяющихся сетевых условиях, таких как 3G, 4G, 5G и т. д. 6. Управление несколькими окнами и вкладками В процессе тестирования программного обеспечения приходится переключаться между несколькими окнами, вкладками или приложениями в одном потоке. В ранних версиях Selenium управлять несколькими окнами или вкладками было непросто, поскольку для этого требовалось создавать новый объект Web Driver, который использовался для переключения на новое окно (или вкладку) с помощью уникального WindowHandle для выполнения последующих действий в этом окне (или вкладке). Но в Selenium 4 эта функция была улучшена. Последняя версия Selenium поставляется с новым API - newWindow, который позволяет тестировщикам создавать и переключаться на новое окно/вкладку без создания нового объекта WebDriver в одном тестовом потоке или сессии. 7. Телеметрия и GraphQL: В Selenium Grid был добавлен фреймворк под названием Open Telemetry. Эта функция привносит в Grid больше наглядности, поскольку позволяет тестировщикам видеть, что происходит внутри Grid, особенно когда что-то идет не так во время выполнения теста. Кроме того, в Grid появилась новая фронтенд консоль, которая работает с конечной точкой GraphQL. Она позволяет тестировщикам выполнять запросы GraphQL к Selenium Grid, как в распределенном режиме, так и на локальной машине. Эта функция помогает им извлекать полезные метрики и информацию из Grid для выполнения задач мониторинга. Joe Colantonio в своей последней статье "Что такое Selenium 4? Последние достижения в области автоматизированного тестирования браузеров" подробно рассказал обо всех вышеперечисленных функциях и важности Selenium 4. 8. Улучшенная документация: В ранних версиях Selenium пользователи сталкивались с большими трудностями при работе с документацией, так как возможности Selenium по документированию были недостаточны. В последних версиях Selenium эта ситуация значительно улучшилась. Selenium 4.0 предоставляет более широкие возможности документирования. Его документационная часть была полностью обновлена с удобным UI, который позволяет пользователям легко переходить к нужному разделу страницы и охватывает всю информацию об инструментах и API, входящих в группу Selenium. Это поможет тестировщикам получить информацию обо всех функциях, необходимых для начала работы с Selenium-тестированием. 1. Депрекация желаемых возможностей Желаемые возможности в основном использовались в сценарии тестирования для определения среды (имя браузера, версия, операционная система) при выполнении тестов на Selenium Grid. Теперь они заменены на Options. Это означает, что тестировщики теперь создают объект Options, задают требования к тесту и передают объект в конструктор Driver. Ниже перечислены объекты Options, которые были включены в Selenium 4.0 Firefox - FirefoxOptions Chrome - ChromeOptions Internet Explorer (IE) - InternetExplorerOptions Microsoft Edge - EdgeOptions Safari - SafariOptions 2. Изменения в классе Action Класс Action используется для имитации действий ввода с клавиатуры или мыши на определенных веб-элементах. Например, щелчок левой или правой  кнопкой мыши, двойной щелчок и т.д. В Selenium 4.0 в класс Action были внесены следующие изменения click(WebElement) заменил moveToElement(onElement).click() {} clickAndHold(WebElement) заменен moveToElement(onElement).clickAndHold() contextClick(WebElement) заменен moveToElement(onElement).contextClick() doubleClick(WebElement) заменил moveToElement(element).doubleClick() release(), который ранее был частью класса org.openqa.selenium.interactions.ButtonReleaseAction, теперь перенесен в класс Action в соответствии с новым обновлением Selenium 4.0. 3. Депрекация FindsBy В старой версии Selenium интерфейсы FindsBy были частью пакета org.openqa.selenium.internal. Он содержал методы findElement(By) и findElements(By), реализованные классом RemoteWebDriver. Однако в версии Selenium 4.0 они были упразднены. 4. Изменения в FluentWait В Selenium 4.0 методы withTimeout() и pollingEvery(), которые являются частью класса FluentWait, были изменены. Метод pollingEvery() принимает только один параметр - Duration, который может задаваться в секундах, миллисекундах, наносекундах, часах, днях и т.д. Аналогично, метод withTimeOut() также принимает только один параметр - Duration. Как TestingXperts (Tx) может помочь компаниям в автоматизации тестирования Selenium? Предприятия должны учитывать, что тестирование Selenium проводится опытными инженерами по автоматизации. Чтобы получить все преимущества тестирования на Selenium, предприятия могут сотрудничать с опытным инженером по автоматизации от независимого поставщика услуг в этой области. Сегодня почти каждый бизнес осознал важность автоматизации тестирования. И чтобы удовлетворить растущий спрос на автоматизацию тестирования, на современном рынке предлагается множество инструментов и фреймворков для этого. Из всех доступных средств автоматизации тестирования одним из инструментов, который широко используется по всему миру, является Selenium. Недавно появилось обновление Selenium, которое привлекло большое внимание аудитории. Последняя версия - Selenium 4.0, имеет ряд дополнительных преимуществ, таких как бесшовная интеграция, параллельное тестирование, кросс-браузерное тестирование, улучшенная документация и т.д., которые значительно упрощают тестирование Selenium. Предприятия должны ознакомиться со всеми особенностями и отличительными чертами Selenium 4.0, упомянутыми в этом блоге, прежде чем делать инвестиции в какую-либо систему автоматизации тестирования или инструмент. Материал подготовлен для будущих учащихся на курсе «Java QA Engineer. Professional». Всех желающих приглашаем на открытый урок "Selenide". На занятии познакомимся с фреймворком Selenide, узнаем, какие проблемы он решает и напишем простой тест с его использованием.   Переводчик, редактор