Selenium з Cucumber (Навчальний посібник з BDD Framework)

⚡ Розумний підсумок

Selenium з Cucumber формує потужну платформу для розробки на основі поведінки (BDD), яка поєднує синтаксис Gherkin простою англійською мовою з Selenium Автоматизація WebDriver. У цьому посібнику пояснюються передумови, розглядаються три практичні сценарії та показано, як файли функцій, визначення кроків та клас TestRunner інтегруються для виконання тестів браузера.

  • 🥒 Основне визначення: Cucumber це інструмент для тестування BDD, який описує поведінку програми простою мовою за допомогою Gherkin, та Selenium керує діями браузера нижче.
  • 🤝 Міст зацікавлених сторін: Cucumber об'єднує бізнес-аналітиків, фахівців з ручного тестування, інженерів з автоматизації та розробників за допомогою спільної, зручної для читання специфікації тестування.
  • 📦 Необхідні банки: Selenium автономний, Cucumber-ядро, Cucumber-ява, Cucumber-джуніт, корнішон, JUnit, а Hamcrest-core утворюють мінімальний набір залежностей.
  • 🧱 Три файли проекту: Файл .feature зі сценаріями, класом визначення кроків Steps.java та TestRunner Runner.java з @CucumberВаріанти клею.
  • 🔁 Тести на основі даних: Використовуйте таблиці "Структура сценарію та приклади", щоб запустити той самий потік для кількох наборів облікових даних за один раз.

Selenium з Cucumber (Навчальний посібник з BDD Framework)

У цьому посібнику ви дізнаєтесь, як інтегрувати Cucumber з Selenium WebDriver для створення фреймворку поведінково-орієнтованої розробки (BDD), який є читабельним, зручним у супроводі та керованим даними.

Що таке Cucumber?

Cucumber – це інструмент тестування, який підтримує розробку на основі поведінки (BDD). Він описує поведінку програми простим англійським текстом за допомогою мови Gherkin, що дозволяє користувачам, які не є розробниками, вносити свій внесок у специфікації тестів, не вивчаючи мову програмування. Дізнайтеся більше в нашому Cucumber підручник.

Що таке Selenium?

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

Навіщо використовувати Cucumber з Selenium?

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

Cucumber базується на фреймворку поведінково-орієнтованого розвитку, який діє як міст між наступними ролями:

  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- ядро
  • Cucumber-html
  • Cobertura покриття коду
  • Cucumber-ява
  • Cucumber-юніт
  • Cucumber-jvm-deps
  • Cucumber-звітування
  • Хамкрест-ядро
  • Ґеркін
  • JUnit

Ви можете завантажити їх за адресою https://mvnrepository.com/search?q=CucumberВам потрібно буде знайти кожен JAR-файл і завантажувати їх по одному.

Наприклад, ось як завантажити один із jar-файлів, «Cucumberбібліотека «-core».

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

Пошук 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 Шлях збірки. Додайте всі бібліотеки, які ви завантажили раніше.

додавати Cucumber та  Selenium jar-файли до Java Побудувати шлях

Крок 3) Створіть файл функцій.

Щоб створити файл функцій, спочатку створіть папку Features, як показано на скріншоті нижче.

Створити папку Features у Eclipse проект

Введіть назву папки «Функції» та натисніть «Готово».

Налаштуйте назву папки Features у Eclipse

Папка Features відображається в провіднику проектів

Тепер створіть файл функцій у папці Features з назвою MyTest.функціяПроцес схожий на створення папки.

Створіть файл MyTest.feature у папці Features

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

Крок 4) Напишіть сценарії.

Наведені нижче рядки написані MyTest.функція використовуючи мову Геркін:

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) Визначає очікуваний результат або результат (Then).

Крок 5) Напиши Selenium Скрипт TestRunner для Cucumber дизайн каркаса.

Створити TestRunner пакет, а потім 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 наприклад, ми запускаємо огірковий тест використовуючи такі анотації:

@RunWith() розповідає JUnit про клас test runner, який починає виконувати наші тести.

@CucumberПараметри() встановлює властивості тесту, такі як шлях до файлу об'єктів та пакет з'єднання визначення кроку.

Знімок екрана файлу TestRunner:

Скрипт Runner.java TestRunner для Cucumber

Крок 6) Створіть сценарій визначення кроку.

Тепер створіть StepDefinition пакет, а потім Steps.java файл скрипта під ним. Усередині Steps.java ми пишемо Selenium логіка, яка відповідає кожному кроку Геркіна.

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 Анотації відображають кожен метод на крок файлу ознак:

@Given визначає спосіб відкриття Firefox та запустіть програму.

@Коли визначає спосіб введення імені користувача та пароля.

@Потім визначає метод скидання облікових даних.

Кожен метод просто виводить повідомлення на консоль.

На скріншоті нижче показано скрипт Steps.java та дерево проєкту:

Скрипт Steps.java та дерево проєкту в Eclipse

Примітка: Визначення кроку – це код, який вам потрібен Cucumber виконати, коли він відповідає кроку файлу функцій.

Крок 7) Виконайте сценарій.

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

Виконайте 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 сценарій:

Сценарій 2 Steps.java з 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.

Тут ми оновлюємо сигнатури методів, щоб вони приймали параметри з таблиці Examples.

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 пробний запуск

Поширені запитання

Cucumber — це BDD-фреймворк, який запускає сценарії, написані на Gherkin. Selenium — це бібліотека автоматизації браузера, яка керує веб-сторінками. Cucumber не взаємодіє з браузерами безпосередньо — він викликає Selenium визначення кроків для виконання фактичних дій інтерфейсу користувача.

Cucumber Файли feature використовують Gherkin, просту англійську мову програмування, орієнтовану на предметну область, яка організовує сценарії за допомогою ключових слів, таких як Feature, Scenario, Given, When, Then, And, But, Scenario Структура та Examples. Gherkin читається як технічними, так і нетехнічними спеціалістами.

Використовуйте ключове слово Scenario Структура з таблицею Приклади. Cucumber виконує той самий сценарій один раз на рядок, замінюючи заповнювачі, такі як і зі значеннями з кожного рядка. Це стандартний шаблон на основі даних у Cucumber.

Штучний інтелект генерує сценарії Gherkin з історій користувачів, рекомендує визначення кроків, відновлює несправні локатори в Selenium, і пропонує приклади даних. Помічники ШІ також позначають дублікати сценаріїв, слабкі твердження та застарілі тести, що забезпечує придатність набору BDD до обслуговування в міру змін у застосунку.

Так. Помічники кодування зі штучним інтелектом зчитують файли функцій Gherkin та генерують відповідність. Java або визначення кроків Kotlin, включаючи Selenium Виклики WebDriver, стратегії локатора та прив'язка параметрів. Потім розробники вдосконалюють згенерований код, що значно зменшує кількість шаблонів під час завантаження.ping нові апартаменти BDD.

Підсумуйте цей пост за допомогою: