Selenium з Cucumber (Навчальний посібник з BDD Framework)
⚡ Розумний підсумок
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 базується на фреймворку поведінково-орієнтованого розвитку, який діє як міст між наступними ролями:
- Інженер-програміст та бізнес-аналітик.
- Ручний тестер і тестер автоматизації.
- Ручний тестер і розробники.
Команда Cucumber Також структура BDD допомагає клієнтам зрозуміти код програми оскільки він використовує мову Gherkin, яка представлена у вигляді простого тексту. Будь-хто в організації може стежити за поведінкою програмного забезпечення. Синтаксис Gherkin написано простою, читабельною англійською мовою, що робить специфікацію доступною для нетехнічних читачів.
Передумови для використання Cucumber з Selenium
Перш ніж ми почнемо Cucumber-Selenium інтеграції, вам знадобляться такі елементи:
Selenium файли jar:
- Selenium- автономний сервер
Ви можете завантажити їх за адресою https://www.selenium.dev/downloads/.
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»), як показано на скріншоті нижче:
На наступній сторінці натисніть версію 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 Шлях збірки. Додайте всі бібліотеки, які ви завантажили раніше.
Крок 3) Створіть файл функцій.
Щоб створити файл функцій, спочатку створіть папку Features, як показано на скріншоті нижче.
Введіть назву папки «Функції» та натисніть «Готово».
Тепер створіть файл функцій у папці Features з назвою MyTest.функціяПроцес схожий на створення папки.
Примітка: Можливо, вам знадобиться встановити 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:
Крок 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 та дерево проєкту:
Примітка: Визначення кроку – це код, який вам потрібен 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.
Тут ми оновлюємо сигнатури методів, щоб вони приймали параметри з таблиці 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();
}
}
Крок 3) Виконайте оновлений скрипт.
На екрані нижче показано успішне виконання та час, витрачений на кожен набір даних.
Крок 4) Проаналізуйте вихідні дані. Наступні кроки повторіть для кожного з 3 наборів даних:
- Браузер запущено.
- GuruВідкривається демо-сайт банку 99.
- Ім'я користувача та пароль вводяться на сторінці входу.
- Кнопка «Скинути» очищує значення.























