Рубрики
Без рубрики

Как Перейти С Selenium 3 На Selenium 4?

Эта статья является частью нашего Центра контента. Для получения более подробной информации ознакомьтесь с нашим центром контента на… С тегами java, selenium, автоматизация, тестирование.

Эта статья является частью нашего Центра контента. Для получения более подробных ресурсов ознакомьтесь с нашим центром контента на 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.

Тестовый сценарий

  1. Зайдите в Google
  2. Поиск Лямбда-теста
  3. Нажмите на первый результат поиска
  4. Подтвердите, если заголовок страницы не соответствует ожидаемому заголовку страницы

Реализация

Вот общая структура проекта в ИДЕЯ 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”