Selenium с Cucumber (Учебное пособие по фреймворку BDD)

⚡ Умное резюме

Selenium с Cucumber формирует мощную структуру разработки, управляемой поведением (BDD), которая сочетает в себе простой синтаксис Gherkin с Selenium Автоматизация WebDriver. В этом руководстве объясняются необходимые предварительные условия, рассматриваются три практических сценария и показано, как файлы функций, определения шагов и класс TestRunner интегрируются для выполнения браузерных тестов.

  • ???? Основное определение: Cucumber Это инструмент BDD-тестирования, описывающий поведение приложения простым языком с использованием Gherkin. Selenium управляет действиями браузера, происходящими ниже.
  • 🤝 Мост заинтересованных сторон: Cucumber Объединяет бизнес-аналитиков, тестировщиков, занимающихся ручным тестированием, инженеров по автоматизации и разработчиков посредством общей, понятной спецификации тестов.
  • 📦 Необходимые банки: Selenium автономный, Cucumber-основной, Cucumber-java, Cucumber-джюнит, Геркин, JUnitи Hamcrest-core образуют минимальный набор зависимостей.
  • 🧱 Три проектных файла: Файл .feature с описанием сценариев, класс определения шагов Steps.java и объект TestRunner Runner.java с аннотацией @.CucumberВарианты клея.
  • 🔁 Тестирование на основе данных: Используйте таблицы «Структура сценария» и «Примеры», чтобы запустить один и тот же процесс с несколькими наборами учетных данных за одно выполнение.

Selenium с Cucumber (Учебное пособие по фреймворку BDD)

В этом уроке вы узнаете, как интегрировать Cucumber с Selenium WebDriver используется для создания фреймворка для разработки, управляемой поведением (BDD), который является читаемым, поддерживаемым и основанным на данных.

Что такое Cucumber?

Cucumber Это инструмент тестирования, поддерживающий разработку, управляемую поведением (BDD). Он описывает поведение приложения простым английским текстом с использованием языка Gherkin, что позволяет неразработчикам вносить свой вклад в спецификации тестов, не изучая язык программирования. Подробнее см. в нашем Cucumber учебник.

Что такое Selenium?

Selenium это инструмент автоматизации, используемый для Функциональное тестирование веб-приложений. Selenium поддерживает множество языков программирования, включая Java, Рубин, Pythonа также C#, что делает его идеальным выбором для команд с разным техническим опытом. Узнайте больше в нашем Selenium учебник.

Зачем использовать Cucumber с Selenium?

Cucumber и Selenium Это две из наиболее широко используемых технологий тестирования. Большинство организаций уже используют их. Selenium для функционального тестирования и хотите использовать многоуровневый подход Cucumber сверху, потому что Cucumber облегчает чтение и понимание работы приложения..

Cucumber основан на концепции разработки, управляемой поведением (Behavior Driven Development), которая действует как мост между следующими ролями:

  1. Инженер-программист и бизнес-аналитик.
  2. Ручной тестер и автоматический тестер.
  3. Ручной тестер и разработчики.

Cucumber BDD-фреймворк также помогает клиентам понять код приложения Потому что в нем используется язык Gherkin, который представлен в виде простого текста. Любой сотрудник организации может понять, как работает программное обеспечение. Синтаксис Gherkin написан простым и понятным английским языком, что делает спецификацию доступной для читателей, не обладающих техническими знаниями.

Cucumber с Selenium Обзор фреймворка BDD

Предварительные условия для использования Cucumber с Selenium

Прежде чем мы начнем Cucumber-Selenium Для интеграции вам потребуются следующие элементы:

Selenium jar-файлы:

  • Selenium-сервер-автономный

Вы можете скачать их на https://www.selenium.dev/downloads/.

Selenium страница загрузки JAR-файлов

JAR-файлы для Cucumber:

  • Cucumber-core
  • Cucumber-html
  • Cobertura покрытие кода
  • Cucumber-Ява
  • Cucumber-юнит
  • Cucumber-jvm-deps
  • Cucumber-составление отчетов
  • Hamcrest-ядро
  • корнишон
  • JUnit

Вы можете скачать их на https://mvnrepository.com/search?q=CucumberВам потребуется найти каждый из этих JAR-файлов и загрузить их по одному.

Например, вот как скачать один из JAR-файлов, а именно «Cucumber-core” библиотека.

Нажмите на ссылку для скачивания выше. Она перенаправит вас на сайт репозитория Maven. Теперь найдите нужный jar-файл (в данном случае «...»).Cucumber «Ядро», как показано на скриншоте ниже:

Поиск Cucumber Основной JAR-файл в репозитории Maven

На следующей странице нажмите на версию 1.2.2:

Выбрать Cucumber Основная версия 1.2.2 в Maven

На следующем экране нажмите «Скачать», чтобы загрузить файл. Cucumber Основной JAR-файл:

Скачать Cucumber Основной JAR-файл

Примечание: Для удобства мы включили в комплект необходимые JAR-файлы Maven. здесьЭти JAR-файлы со временем могут устареть и стать несовместимыми, поэтому мы рекомендуем загрузить их самостоятельно, используя описанный выше способ.

Автоматизация тестирования с использованием Cucumber с Selenium

Давайте разберемся, как это использовать. Cucumber с Selenium шаг за шагом. Здесь мы рассмотрим три сценария:

  • Сценарий 1. Печать текста в консоли.
  • Сценарий 2: Введите учетные данные для входа и сбросьте значение.
  • Сценарий 3: Введите учетные данные для входа в систему. Guru99 и сброс значения — повторено для 3 наборов данных.

Сценарий 1: Вывод текста в консоль

В этом случае мы просто выводим текст в консоль, используя Cucumber.

Шаг 1) Создайте проект в Eclipse.

Создайте Java проект с названием CucumberСSelenium как показано на скриншоте ниже.

Создавай CucumberСSelenium Java проекта в Eclipse

Java настройка названия проекта в Eclipse

Шаг 2) Добавьте JAR-файлы в проект.

Щелкните правой кнопкой мыши по проекту > Свойства > Java Build Path. Добавьте все библиотеки, которые вы скачали ранее.

Добавить Cucumber  и  Selenium JAR-файлы для Java Путь сборки

Шаг 3) Создайте файл с описанием объектов.

Для создания файла объектов сначала создайте папку Features, как показано на скриншоте ниже.

Создайте папку Features в Eclipse Проект

Введите название папки «Features» и нажмите «Готово».

Настройте имя папки «Функции» в Eclipse

Папка Features отображается в обозревателе проектов.

Теперь создайте файл описания объекта внутри папки Features с именем... MyTest.featureПроцесс аналогичен созданию папки.

Создайте файл MyTest.feature в папке Features.

Примечание: Возможно, вам придется установить Cucumber Eclipse Сначала установите плагин. Перейдите в раздел «Справка» → «Установка нового программного обеспечения» и вставьте ссылку. http://cucumber.github.io/cucumber-eclipse/update-site/и установите его.

Шаг 4) Опишите сценарии.

Приведённые ниже строки написаны на MyTest.feature с использованием языка Gherkin:

Feature: Reset functionality on login page of Application

Scenario: Verification of Reset button

Given Open the Firefox and launch the application

When Enter the Username and Password

Then Reset the credential

Code объяснение

Строка 1) Определяет функциональность бизнес-процессов.

Строка 2) Определяет сценарий для тестирования.

Строка 3) Определяет предварительное условие (Дано).

Строка 4) Определяет действие, которое необходимо выполнить (Когда).

Строка 5) Определяет ожидаемый результат (Затем).

Шаг 5) Написать Selenium Скрипт TestRunner для Cucumber проектирование структуры.

Создайте ТестРаннер пакет, а затем Runner.java внутри него находится файл класса.

package TestRunner;

import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(features = "Features", glue = {"StepDefinition"})
public class Runner
{

}

В выше Cucumber Java например, мы запускаем огуречный тест используя следующие аннотации:

@Бежать с() говорит JUnit о классе запуска тестов, который начинает выполнение наших тестов.

@CucumberПараметры() задает параметры теста, такие как путь к файлу с описанием объекта и пакет связующих данных для определения шагов.

Скриншот файла TestRunner:

Runner.java Сценарий TestRunner для Cucumber

Шаг 6) Создайте сценарий определения шага.

Теперь создайте StepDefinition пакет, а затем Steps.java В этом файле скрипта находится файл Steps.java. Внутри него мы пишем следующий код: Selenium логика, которая соответствует каждому шагу алгоритма Gherkin.

package StepDefinition;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.out.println("This Step open the Firefox and launch the application.");
    }

    @When("^Enter the Username and Password$")
    public void enter_the_Username_and_Password() throws Throwable
    {
        System.out.println("This step enter the Username and Password on the login page.");
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        System.out.println("This step click on the Reset button.");
    }
}

Класс называется Шаги и Cucumber Аннотации сопоставляют каждый метод с этапом файла признаков:

@Данный определяет способ открытия Firefox и запустите приложение.

@Когда Определяет способ ввода имени пользователя и пароля.

@Затем Определяет метод сброса учетных данных.

Каждый из методов просто выводит сообщение в консоль.

На скриншоте ниже показан скрипт Steps.java и структура проекта:

Файл Steps.java с файлом script и деревом проекта находится в папке... Eclipse

Примечание: Определение шага — это тот код, который вам нужен. Cucumber Выполняется при совпадении с шагом файла с описанием объекта.

Шаг 7) Выполните сценарий.

Запустите этот скрипт из файла TestRunner (Runner.java), как показано ниже.

Для запуска выполните команду `execut Runner.java`. Cucumber тест

Шаг 8) Проанализируйте результат.

При выполнении файла Runner.java, Cucumber Выводит в консоль тот же текст, что и в файле Steps.java.

Вывод консоли из Cucumber выполнение теста

Сценарий 2: Введите учетные данные для входа и сбросьте значение.

Здесь мы вводим учетные данные на Guru99 демонстрационная страница входа и сброс значения.

Для сценария 2 нам нужно только обновить Steps.javaЗдесь мы добавляем реальное Selenium код. Во-первых, убедитесь, что Selenium JAR-файл добавлен в проект.

подтвердить Selenium JAR-файл находится в пути к классам проекта.

Шаг 1) Обновите скрипт Steps.java, как показано ниже.

package StepDefinition;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    WebDriver driver;

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://demo.guru99.com/v4");
    }

    @When("^Enter the Username and Password$")
    public void enter_the_Username_and_Password() throws Throwable
    {
        driver.findElement(By.name("uid")).sendKeys("username12");
        driver.findElement(By.name("password")).sendKeys("password12");
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        driver.findElement(By.name("btnReset")).click();
    }
}

Скриншот вышеизложенного Selenium сценарий:

Scenario 2 Steps.java with Selenium логика

Шаг 2) Выполните сценарий.

После обновления файла Steps.java запустите файл Runner.java.

Шаг 3) Проанализируйте результат. В выводе вы увидите следующее:

  • Браузер запущен.
  • GuruОткрылся демонстрационный сайт банка 99.
  • Имя пользователя и пароль вводятся на странице входа.
  • Кнопка «Сброс» очищает значения.

Анимация сценария 2, демонстрирующая Cucumber Selenium тестовый забег

Сценарий 3: Запуск процесса входа в систему и сброса с использованием 3 наборов данных.

Здесь нам нужно обновить оба Steps.java а также файл с описанием функций для управления тем же процессом с тремя наборами учетных данных.

Шаг 1) Обновите файл с описанием функций, как показано ниже.

Мы используем Схема сценария и Примеры синтаксис так Cucumber повторяет один и тот же сценарий для каждой строки данных.

Feature: Reset functionality on login page of Application

Scenario Outline: Verification of reset button with multiple credentials

Given Open the Firefox and launch the application

When Enter the Username <username> and Password <password>

Then Reset the credential

Examples:
    | username | password  |
    | User1    | password1 |
    | User2    | password2 |
    | User3    | password3 |

Файл описания функций с таблицей «Сценарий и примеры».

Шаг 2) Обновите скрипт Steps.java.

Здесь мы обновляем сигнатуры методов, чтобы они принимали параметры из таблицы примеров.

package StepDefinition;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;

public class Steps {

    WebDriver driver;

    @Given("^Open the Firefox and launch the application$")
    public void open_the_Firefox_and_launch_the_application() throws Throwable
    {
        System.setProperty("webdriver.gecko.driver", "E://Selenium//Selenium_Jars//geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().window().maximize();
        driver.get("http://demo.guru99.com/v4");
    }

    @When("^Enter the Username \"(.*)\" and Password \"(.*)\"$")
    public void enter_the_Username_and_Password(String username, String password) throws Throwable
    {
        driver.findElement(By.name("uid")).sendKeys(username);
        driver.findElement(By.name("password")).sendKeys(password);
    }

    @Then("^Reset the credential$")
    public void Reset_the_credential() throws Throwable
    {
        driver.findElement(By.name("btnReset")).click();
    }
}

Обновлен файл Steps.java с параметризованными учетными данными.

Шаг 3) Выполните обновленный скрипт.

На приведенном ниже скриншоте показано успешное выполнение и время, затраченное на обработку каждого набора данных.

Успешное выполнение сценария 3 с тремя наборами данных.

Шаг 4) Проанализируйте полученные данные. Следующие шаги повторяются для каждого из 3 наборов данных:

  • Браузер запущен.
  • GuruОткрылся демонстрационный сайт банка 99.
  • Имя пользователя и пароль вводятся на странице входа.
  • Кнопка «Сброс» очищает значения.

Анимация сценария 3, демонстрирующая параметризованный Cucumber тестовый забег

Часто задаваемые вопросы (FAQ)

Cucumber Это BDD-фреймворк, который запускает сценарии, написанные на Gherkin. Selenium Это библиотека для автоматизации браузера, которая управляет веб-страницами. Cucumber не взаимодействует напрямую с браузерами — он вызывает Selenium Определение шагов для выполнения фактических действий пользовательского интерфейса.

Cucumber В файлах описания функций используется Gherkin — простой и понятный предметно-ориентированный язык, который организует сценарии с помощью ключевых слов, таких как Feature, Scenario, Given, When, Then, And, But, Scenario Outline и Examples. Gherkin понятен как техническим, так и нетехническим специалистам.

Используйте ключевое слово «Scenario Outline» с таблицей примеров. Cucumber выполняет один и тот же сценарий один раз для каждой строки, заменяя заполнители, например, и со значениями из каждой строки. Это стандартный шаблон, основанный на данных. Cucumber.

Искусственный интеллект генерирует сценарии Gherkin на основе пользовательских историй, рекомендует определения шагов и исправляет неработающие локаторы. Seleniumа также предлагает примеры данных. Искусственный интеллект также отмечает повторяющиеся сценарии, слабые утверждения и устаревшие тесты, что обеспечивает поддержку набора BDD-тестов по мере изменения приложения.

Да. Искусственный интеллект-помощники в программировании считывают файлы функций Gherkin и генерируют соответствующие шаблоны. Java или определения шагов Kotlin, включая Selenium Вызовы WebDriver, стратегии локаторов и привязка параметров. Затем разработчики дорабатывают сгенерированный код, что значительно сокращает количество шаблонного кода при начальной загрузке.ping новые пакеты BDD.

Подведем итог этой публикации следующим образом: