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

В этом уроке вы узнаете, как интегрировать 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), которая действует как мост между следующими ролями:
- Инженер-программист и бизнес-аналитик.
- Ручной тестер и автоматический тестер.
- Ручной тестер и разработчики.
Cucumber BDD-фреймворк также помогает клиентам понять код приложения Потому что в нем используется язык Gherkin, который представлен в виде простого текста. Любой сотрудник организации может понять, как работает программное обеспечение. Синтаксис Gherkin написан простым и понятным английским языком, что делает спецификацию доступной для читателей, не обладающих техническими знаниями.
Предварительные условия для использования Cucumber с Selenium
Прежде чем мы начнем Cucumber-Selenium Для интеграции вам потребуются следующие элементы:
Selenium jar-файлы:
- Selenium-сервер-автономный
Вы можете скачать их на https://www.selenium.dev/downloads/.
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 «Ядро», как показано на скриншоте ниже:
На следующей странице нажмите на версию 1.2.2:
На следующем экране нажмите «Скачать», чтобы загрузить файл. Cucumber Основной JAR-файл:
Примечание: Для удобства мы включили в комплект необходимые JAR-файлы Maven. здесьЭти JAR-файлы со временем могут устареть и стать несовместимыми, поэтому мы рекомендуем загрузить их самостоятельно, используя описанный выше способ.
Автоматизация тестирования с использованием Cucumber с Selenium
Давайте разберемся, как это использовать. Cucumber с Selenium шаг за шагом. Здесь мы рассмотрим три сценария:
- Сценарий 1. Печать текста в консоли.
- Сценарий 2: Введите учетные данные для входа и сбросьте значение.
- Сценарий 3: Введите учетные данные для входа в систему. Guru99 и сброс значения — повторено для 3 наборов данных.
Сценарий 1: Вывод текста в консоль
В этом случае мы просто выводим текст в консоль, используя Cucumber.
Шаг 1) Создайте проект в Eclipse.
Создайте Java проект с названием CucumberСSelenium как показано на скриншоте ниже.
Шаг 2) Добавьте JAR-файлы в проект.
Щелкните правой кнопкой мыши по проекту > Свойства > Java Build Path. Добавьте все библиотеки, которые вы скачали ранее.
Шаг 3) Создайте файл с описанием объектов.
Для создания файла объектов сначала создайте папку Features, как показано на скриншоте ниже.
Введите название папки «Features» и нажмите «Готово».
Теперь создайте файл описания объекта внутри папки Features с именем... MyTest.featureПроцесс аналогичен созданию папки.
Примечание: Возможно, вам придется установить 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:
Шаг 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 и структура проекта:
Примечание: Определение шага — это тот код, который вам нужен. Cucumber Выполняется при совпадении с шагом файла с описанием объекта.
Шаг 7) Выполните сценарий.
Запустите этот скрипт из файла TestRunner (Runner.java), как показано ниже.
Шаг 8) Проанализируйте результат.
При выполнении файла Runner.java, Cucumber Выводит в консоль тот же текст, что и в файле Steps.java.
Сценарий 2: Введите учетные данные для входа и сбросьте значение.
Здесь мы вводим учетные данные на Guru99 демонстрационная страница входа и сброс значения.
Для сценария 2 нам нужно только обновить Steps.javaЗдесь мы добавляем реальное Selenium код. Во-первых, убедитесь, что 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 сценарий:
Шаг 2) Выполните сценарий.
После обновления файла Steps.java запустите файл Runner.java.
Шаг 3) Проанализируйте результат. В выводе вы увидите следующее:
- Браузер запущен.
- GuruОткрылся демонстрационный сайт банка 99.
- Имя пользователя и пароль вводятся на странице входа.
- Кнопка «Сброс» очищает значения.
Сценарий 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();
}
}
Шаг 3) Выполните обновленный скрипт.
На приведенном ниже скриншоте показано успешное выполнение и время, затраченное на обработку каждого набора данных.
Шаг 4) Проанализируйте полученные данные. Следующие шаги повторяются для каждого из 3 наборов данных:
- Браузер запущен.
- GuruОткрылся демонстрационный сайт банка 99.
- Имя пользователя и пароль вводятся на странице входа.
- Кнопка «Сброс» очищает значения.























