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 и Runner.java TestRunner с @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-core
  • Cucumber-html
  • Cobertura покритие на кода
  • Cucumber-ява
  • Cucumber-юнит
  • Cucumber-jvm-deps
  • Cucumber-отчитане
  • Hamcrest-core
  • малка руска краставичка
  • JUnit

Можете да ги изтеглите на https://mvnrepository.com/search?q=CucumberЩе трябва да търсите всеки jar и да ги изтегляте един по един.

Например, ето как да изтеглите един от jar файловете, „Cucumber-core“ библиотека.

Кликнете върху връзката за изтегляне по-горе. Тя пренасочва към сайта на Maven Repository. Сега потърсете конкретния jar файл (в този случай „Cucumber Core“), както е показано на екранната снимка по-долу:

търсене Cucumber Core jar в Maven Repository

На следващата страница щракнете върху версия 1.2.2:

Изберете Cucumber Основна версия 1.2.2 в Maven

На следващия екран щракнете върху „Изтегляне“, за да вземете Cucumber Основен jar файл:

Изтеглете Cucumber Основен jar файл

Забележка: За удобство сме включили необходимите Maven jar файлове тукТези 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) Създайте файл с характеристики.

За да създадете файл с функции, първо създайте папка „Функции“, както е показано на екранната снимка по-долу.

Създаване на папка „Функции“ в Eclipse проект

Въведете името на папката „Характеристики“ и щракнете върху „Готово“.

Конфигурирайте името на папката „Функции“ в Eclipse

Папката с функции се вижда в Project Explorer

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

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

Забележка: Може да се наложи да инсталирате Cucumber Eclipse Първо инсталирайте плъгина. Отидете на Помощ → Инсталиране на нов софтуер и поставете връзката http://cucumber.github.io/cucumber-eclipse/update-site/, и го инсталирайте.

Стъпка 4) Напишете сценариите.

Редовете по-долу са написани на MyTest.feature използвайки езика Гъркин:

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) Създайте скрипта за дефиниране на стъпка.

Сега създайте a 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 Анотациите съпоставят всеки метод със стъпка от файл с характеристики:

@Дадено определя метода за отваряне 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.
  • Потребителското име и паролата се въвеждат на страницата за вход.
  • Бутонът Reset изчиства стойностите.

Показване на анимация от сценарий 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.
  • Потребителското име и паролата се въвеждат на страницата за вход.
  • Бутонът Reset изчиства стойностите.

Анимация на сценарий 3, показваща параметризирано Cucumber тестово изпълнение

Въпроси и Отговори

Cucumber е BDD рамка, която изпълнява сценарии, написани на Gherkin. Selenium е библиотека за автоматизация на браузъра, която управлява уеб страници. Cucumber не взаимодейства директно с браузърите — той извиква Selenium дефиниции на стъпки за изпълнение на действителните действия в потребителския интерфейс.

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

Използвайте ключовата дума „Очертание на сценария“ с таблица с примери. Cucumber изпълнява един и същ сценарий веднъж на ред, замествайки заместители като например и със стойностите от всеки ред. Това е стандартният модел, управляван от данни, в Cucumber.

Изкуственият интелект генерира сценарии на Gherkin от потребителски истории, препоръчва дефиниции на стъпки, поправя счупени локатори в Seleniumи предлага примерни данни. Асистентите с изкуствен интелект също така маркират дублиращи се сценарии, слаби твърдения и остарели тестове, което поддържа BDD пакета поддържаем с промените в приложението.

Да. Асистентите за кодиране с изкуствен интелект четат файлове с функции на Gherkin и генерират съвпадения. Java или дефиниции на стъпки в Kotlin, включително Selenium Извиквания на WebDriver, стратегии за локатор и свързване на параметри. След това разработчиците усъвършенстват генерирания код, което драстично намалява шаблонния код при първоначалното зареждане.ping нови BDD апартаменти.

Обобщете тази публикация с: