Эта статья является частью нашего Центра контента. Для получения более подробных ресурсов ознакомьтесь с нашим центром контента на Selenium 4 .
Selenium 4, последняя версия фреймворка Selenium, стала предметом разговоров в городе с момента ее анонса в 2018 году. Волнение вокруг Selenium 4 очевидно, поскольку он оснащен множеством новых функций и улучшений по сравнению с его предшественником. Хотя официального объявления о “финальном” выпуске Selenium 4 нет, пользователи Selenium и энтузиасты автоматизации тестирования уже начали изучать и экспериментировать, загрузив альфа-версию Selenium 4 .
Если вы подумываете об обновлении с Selenium 3 до Selenium 4, это руководство по Selenium 4 поможет вам перейти на новую версию! Для людей, ожидающих в стороне, чтобы попробовать Selenium 4, сравнение между Selenium 3 и Selenium 4 может побудить вас попробовать Selenium 4 гораздо раньше, чем вы когда-либо ожидали ☺ .
Хотя Selenium имеет различные языковые привязки, такие как Java, C#, Python, JavaScript, Ruby и PHP, в этом руководстве Selenium 4 основное внимание будет уделено установке привязок Java.
Селен 3 против селена 4
Интересно, “Какой уникальностью обладает Selenium 4 по сравнению с Selenium 3?” Что ж, чтобы ответить на этот вопрос, мы проведем краткое ознакомление с новинками, предлагаемыми Selenium 4, в этом разделе руководства Selenium 3 vs. Selenium 4:
Стандартизация Selenium WebDriver W3C
В Selenium 3 протокол JSON Wire был основным режимом связи между тестовым кодом и веб-браузером. Основные драйверы браузеров, такие как ChromeDriver, Gecko Driver и т.д., Соответствуют стандарту W3C. Это привело к кодированию и декодированию запросов в соответствии с протоколом W3C.
Под капотом Selenium 4 использует протокол WebDriver W3C. Это устраняет накладные расходы на кодирование и декодирование, которые были необходимы при использовании протокола JSON Wire в Selenium 3. Это серьезное архитектурное изменение приведет к менее сложным и более стабильным кроссбраузерным тестам (т.Е. тестам в разных версиях и типах браузеров) с Selenium 4. Вы можете обратиться к нашему подробному описанию Selenium W3C WebDriver в Selenium 4, чтобы получить более подробную информацию.
Среда разработки Selenium 4 IDE
IDE в Selenium 4 – это гораздо больше, чем элементарный инструмент для тестирования воспроизведения и записи. Наряду с Firefox, он доступен для браузера Chrome (как расширение Chrome).
Инструмент SIDE Runner в Selenium 4 IDE позволяет запускать тесты Selenium параллельно в локальной Selenium Grid и облачной Selenium Grid. Функция “экспорт” позволяет экспортировать записанные тесты на языках, поддерживаемых Selenium, таких как Python, C#, Java и других. Selenium 4 IDE – это обновленное и очень полезное предложение, доступное только в Selenium 4.
Оптимизированная Селеновая сетка
Если вы являетесь пользователем Selenium 3, вы должны знать, насколько болезненно запускать JAR-файлы Hub и Node каждый раз, когда вы хотите выполнить автоматизированное тестирование в сети. Распределенное выполнение тестов полностью настроено на изменение с помощью оптимизированной сетки Selenium в Selenium 4.
В Selenium Grid 4 концентратор и узел упакованы в один jar-файл. Selenium Grid 4 имеет более масштабируемую и отслеживаемую инфраструктуру, которая поддерживает четыре процесса – Маршрутизатор, Карту сеансов, Распределитель и Узел. Улучшенный графический интерфейс и встроенная поддержка Docker – вот некоторые из дополнительных преимуществ, которые вы получаете в Selenium Grid 4 .
Chrome DevTools
В Selenium 4 есть встроенная поддержка протокола Chrome DevTools (CDP) через интерфейс DevTools. API-интерфейсы интерфейса Chrome DevTools значительно упростили бы диагностику проблем и редактирование страниц “на лету”.
Встроенная поддержка CDP поможет с большей легкостью эмулировать геолокацию и сетевые условия в Selenium 4. С помощью Selenium 4 вы можете протестировать веб-продукт, созданный для глобальной аудитории, эмулируя геолокацию в коде. В то же время вы также можете проверить, как продукт работает в различных сетевых условиях (например, 3G, 4G и т.д.).
Относительные локаторы
В Selenium 3 вы должны использовать серию команд findelement для соответствующего веб-элемента, чтобы найти его соседние элементы. Не было быстрого способа найти элемент, который находится выше/ниже/справа от/и т.д. конкретного WebElement.
Относительные локаторы (above, below, toRightOf, toLeftOf и gear), недавно введенные в Selenium 4 Alpha, помогают находить веб-элементы “относительно” определенного элемента в DOM. Наш подробный обзор относительных локаторов в Selenium 4 может помочь вам начать работу с этой функцией, доступной исключительно в Selenium 4.
Помимо этих значительных улучшений в Selenium 4, он оснащен другими новыми функциями:
- _TakeElementScreensho_api позволяет вам сделать снимок экрана определенного веб-элемента на странице.
- Внедрение нового Window API помогает в упрощенном создании нового окна ( WindowType. ОКНО ) или Вкладка ( Тип окна. ВКЛАДКА ).
- Оптимизированный и ускоренный процесс отладки.
Что касается сравнения Селена 3 с Селеном 4, то общий опыт работы с Селеном 4 (Альфа) намного превосходит Селен 3. Это один из основных мотивирующих факторов для загрузки Selenium 4 (Альфа) и получения в свои руки потрясающих функций, предлагаемых Selenium 4.
Обновление с Selenium 3 до Selenium 4
На момент написания этой статьи Selenium 4.0.0-alpha-7 была последней версией Selenium 4 (Альфа), доступной для загрузки на веб-сайте Selenium. Selenium 4 для разных языковых привязок показан ниже:
Ява | Рубин |
Питон | Рубин |
C# | Рубин |
Рубин | Рубин |
Selenium с Maven – Обновление с Selenium 3 до Selenium 4
Если вы используете Selenium с Java, вы, скорее всего, будете использовать Selenium с Maven для управления зависимостями, связанными с вашим проектом Selenium. Для пользователей Selenium с Maven измените версию Selenium на 4 в pom.xml это все, что вам нужно для перехода с Selenium 3 на Selenium 4.
4.0.0 org.demo TestProject 1.0-SNAPSHOT org.testng testng 6.9.10 test org.slf4j slf4j-nop 1.7.28 test org.seleniumhq.selenium selenium-java 4.0.0-alpha-7 org.seleniumhq.selenium selenium-remote-driver 4.0.0-alpha-7 org.seleniumhq.selenium selenium-chrome-driver 4.0.0-alpha-7 install maven-compiler-plugin 3.0 1.8 1.8
Центральный репозиторий Maven – идеальное место для поиска зависимостей или библиотек для всех версий. Как показано выше, мы загрузили зависимость Maven для Selenium 4 Java и добавил то же самое в pom.xml
Наряду с Selenium 4 Java мы также добавили пакеты Selenium 4 для selenium-chromedriver и selenium-remote-driver в файл POM (pom.xml ).
Selenium с Gradle – Обновление с Selenium 3 до Selenium 4
Gradle – это популярный инструмент сборки, который используется для приложений на базе Java. Сценарии сборки в Gradle написаны на Groovy или Kotlin DSL. Если вы используете Gradle для своего проекта Selenium Java, необходимые зависимости должны быть настроены в файле build.gradle, который размещается на корневом уровне (проекта).
Необходимые зависимости для загрузки должны быть добавлены в build.gradle. Как и Maven, центральный репозиторий Maven следует использовать для поиска необходимых зависимостей для проекта.
Вот файл сборки (build.gradle) для проекта Gradle, в котором мы использовали версию 4.0.0-alpha-7 привязки Selenium Java. Поскольку мы используем Testing framework в реализации, мы добавили другие зависимости в build.gradle.
plugins { id 'java' } group 'org.demo' version '1.0-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.0.0-alpha-7' compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '4.0.0-alpha-7' compile group: 'org.seleniumhq.selenium', name: 'selenium-remote-driver', version: '4.0.0-alpha-7' compile group: 'org.testng', name: 'testng', version: '6.14.3' } test { useTestNG() }
Тестовая настройка – Демонстрация перехода с Selenium 3 на Selenium 4
Чтобы продемонстрировать, как перейти с Selenium 3 на Selenium 4, мы возьмем пример кроссбраузерного тестирования, в котором выполняется поиск “LambdaTest” в Google. Тест выполняется в браузере Chrome.
Тестовый сценарий
- Зайдите в Google
- Поиск Лямбда-теста
- Нажмите на первый результат поиска
- Подтвердите, если заголовок страницы не соответствует ожидаемому заголовку страницы
Реализация
Вот общая структура проекта в ИДЕЯ IntelliJ/|:
Загрузка Selenium 4 с помощью Maven
В проекте Maven, pom.xml файл состоит из необходимых сведений о конфигурации, зависимостях и многом другом. Наряду с Selenium 4 Java мы также добавили зависимости Selenium 4 ChromeDriver и Selenium 4 remote Driver в pom.xml .
4.0.0 org.demo TestProject 1.0-SNAPSHOT org.testng testng 6.9.10 test org.slf4j slf4j-nop 1.7.28 test org.seleniumhq.selenium selenium-java 4.0.0-alpha-7 org.seleniumhq.selenium selenium-remote-driver 4.0.0-alpha-7 org.seleniumhq.selenium selenium-chrome-driver 4.0.0-alpha-7 install maven-compiler-plugin 3.0 1.8 1.8
Поскольку мы используем платформу тестирования, подробные сведения о тестовых сценариях добавляются в testng.xml .
package Demo; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.net.MalformedURLException; import java.net.URL; import static org.testng.AssertJUnit.assertEquals; public class DemoTest { ChromeDriver web_driver = null; @BeforeTest public void testSetUp() { web_driver = new ChromeDriver(); web_driver.get("https://www.google.com"); web_driver.manage().window().maximize(); } @Test public void test_search_demo() throws InterruptedException { WebElement elem_search = web_driver.findElement(By.name("q")); elem_search.sendKeys("LambdaTest" + Keys.ENTER); Thread.sleep(3000); WebElement elem_search_result = web_driver.findElement(By.xpath("//h3[.='LambdaTest: Most Powerful Cross Browser Testing Tool Online']")); elem_search_result.click(); assertEquals(web_driver.getTitle(), "Most Powerful Cross Browser Testing Tool Online | LambdaTest"); } @AfterTest public void tearDown() { if (web_driver != null) { System.out.println("Demo Test is Completed"); web_driver.quit(); } } }
Настройка Gradle
Тот же проект используется для демонстрации перехода с Selenium 3 на Selenium 4 с использованием Gradle. Зависимости, плагины и сценарии сборки должны быть доступны в файле build.gradle, который размещается на корневом уровне проекта.
Для краткого обзора Gradle вы можете обратиться к подробному описанию Gradle (с JUnit) в нашем предыдущем блоге здесь . Зависимости Selenium 4 Java, драйвера Selenium Chrome (4.0.0-alpha-7), удаленного драйвера Selenium (4.0.0-alpha-7) и TestNG (6.14.3) добавлены в build.gradle.
plugins { id 'java' } group 'org.demo' version '1.0-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '4.0.0-alpha-7' compile group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '4.0.0-alpha-7' compile group: 'org.seleniumhq.selenium', name: 'selenium-remote-driver', version: '4.0.0-alpha-7' compile group: 'org.testng', name: 'testng', version: '6.14.3' } test { useTestNG() }
Исполнение
Чтобы выполнить тестовый сценарий, щелкните правой кнопкой мыши на testng.xml и выберите “выполнить …\testng.xml “.
Приведенный ниже снимок выполнения показывает, что экземпляр Chrome WebDriver был создан, и тестовый сценарий был успешно выполнен.
Для Gradle мы используем опцию командной строки (gradle test) для запуска теста в проекте. Поскольку тестовый сценарий (test_search_demo) находится в файле класса Demo Test, мы запускаем тест с помощью следующей команды (после перехода в корневую папку проекта):
gradle test --tests DemoTest.test_search_demo
Как видно из моментального снимка выполнения, тест был выполнен успешно.
Обновление С Selenium 3 До Selenium 4 С Использованием облачной Сетки Selenium
Преимущества, предлагаемые Selenium 4, лучше всего использовать в сетке Selenium, где тесты могут выполняться параллельно на соответствующих узлах. Сетка Selenium 4/| предоставляет множество новых функций, которые упрощают и ускоряют тестирование веб-автоматизации Selenium.
Облачная сетка Selenium, такая как LambdaTest, обеспечивает столь необходимую масштабируемость, надежность и безопасность, которых трудно достичь с помощью локальной сетки Selenium. Тестирование Selenium в облаке помогает улучшить охват браузером, охват тестированием и охват тестированием, поскольку ряд тестов может выполняться параллельно в облачной сетке Selenium.
Мы переносим тест, продемонстрированный ранее, так, чтобы он выполнялся в сетке Selenium 4 лямбда-теста. Чтобы начать, мы создаем желаемые возможности для привязки языка Java с помощью генератора возможностей лямбда-тестирования.
В рамках настройки метод, реализованный в аннотации @BeforeTest, будет использовать RemoteWebDriver вместо локального драйвера Chrome. Ниже показан обновленный DemoTest.java где мы используем лямбда-тест Selenium Grid для выполнения теста:
package Demo; import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.net.MalformedURLException; import java.net.URL; import static org.testng.AssertJUnit.assertEquals; public class DemoTest { /* ChromeDriver web_driver = null; */ public WebDriver web_driver; public static String username = "user-name"; public static String access_key = "access-key"; @BeforeTest public void testSetUp() throws MalformedURLException { /* web_driver = new ChromeDriver(); */ DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("build", "Testing on the LambdaTest Grid"); capabilities.setCapability("name", "Testing on the LambdaTest Grid"); capabilities.setCapability("platform", "Windows 10"); capabilities.setCapability("browserName", "Chrome"); capabilities.setCapability("version","88.0"); web_driver = new RemoteWebDriver(new URL("http://" + username + ":" + access_key + "@hub.lambdatest.com/wd/hub"), capabilities); web_driver.get("https://www.google.com"); web_driver.manage().window().maximize(); } @Test public void test_search_demo() throws InterruptedException { WebElement elem_search = web_driver.findElement(By.name("q")); elem_search.sendKeys("LambdaTest" + Keys.ENTER); Thread.sleep(3000); WebElement elem_search_result = web_driver.findElement(By.xpath("//h3[.='LambdaTest: Most Powerful Cross Browser Testing Tool Online']")); elem_search_result.click(); assertEquals(web_driver.getTitle(), "Most Powerful Cross Browser Testing Tool Online | LambdaTest"); } @AfterTest public void tearDown() { if (web_driver != null) { System.out.println("Demo Test is Completed"); web_driver.quit(); } } }
Информация о выполнении доступна в Automation Dashboard Лямбда-теста. Как показано ниже, тест был успешно выполнен на лямбда-тестовой сетке Selenium:
Вот И Все, Ребята
Selenium 4 предлагает несколько новых функций, таких как относительные локаторы, Chrome DevTools, улучшенная сетка Selenium и многое другое, что делает его достойным обновлением по сравнению с Selenium 3. В этом руководстве по Selenium 4 мы подробно рассмотрели, как перейти с Selenium 3 на Selenium 4 для привязок языка Java. Если вы используете Maven для проекта, обновление до Selenium 4 заключается в извлечении Selenium 4 из репозитория Maven и добавлении того же самого в pom.xml .
Помимо Java, легко перейти на Selenium 4 для поддерживаемых Selenium языков, таких как Python, C#, PHP, Ruby и JavaScript. Что касается Селена 3 по сравнению с Селеном 4, то Селен 4 (который все еще находится на стадии альфа-тестирования) имеет огромное преимущество перед своим предшественником.
Если вы используете Selenium 4, пробовали ли вы Selenium с Maven? Пожалуйста, поделитесь своим опытом в разделе комментариев. Кроме того, дайте нам знать, какая ваша “основная функция” в Selenium 4.
Счастливого Тестирования Автоматизации. ☺
Оригинал: “https://dev.to/himanshusheth004/how-to-upgrade-from-selenium-3-to-selenium-4-5cdg”