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-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“), както е показано на екранната снимка по-долу:
На следващата страница щракнете върху версия 1.2.2:
На следващия екран щракнете върху „Изтегляне“, за да вземете Cucumber Основен jar файл:
Забележка: За удобство сме включили необходимите Maven jar файлове тукТези JAR файлове може да остареят и да станат несъвместими с течение на времето, затова ви препоръчваме да ги изтеглите сами, като използвате описания по-горе метод.
Използване на автоматизирано тестване Cucumber с Selenium
Нека разгледаме как да го използваме Cucumber с Selenium стъпка по стъпка. Тук ще разгледаме три сценария:
- Сценарий 1: Отпечатайте текст в конзолата.
- Сценарий 2: Въведете идентификационни данни за вход и нулирайте стойността.
- Сценарий 3: Въведете идентификационни данни за вход в Guru99 и нулиране на стойността — повтаря се за 3 набора от данни.
Сценарий 1: Печат на текст в конзолата
В този сценарий просто отпечатваме текст в конзолата, използвайки Cucumber.
Стъпка 1) Създайте проект в Eclipse.
Създаване на Java проект с името "CucumberсSelenium" както е показано на екранната снимка по-долу.
Стъпка 2) Добавете jar файловете към проекта.
Щракнете с десния бутон върху проекта > Свойства > Java Път за изграждане. Добавете всички библиотеки, които сте изтеглили по-рано.
Стъпка 3) Създайте файл с характеристики.
За да създадете файл с функции, първо създайте папка „Функции“, както е показано на екранната снимка по-долу.
Въведете името на папката „Характеристики“ и щракнете върху „Готово“.
Сега създайте файл с функции в папката Features с име MyTest.featureПроцесът е подобен на създаването на папка.
Забележка: Може да се наложи да инсталирате 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:
Стъпка 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 и дървото на проекта:
Забележка: Дефиницията на стъпка е кодът, който искате 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.
- Потребителското име и паролата се въвеждат на страницата за вход.
- Бутонът Reset изчиства стойностите.
Сценарий 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.
- Потребителското име и паролата се въвеждат на страницата за вход.
- Бутонът Reset изчиства стойностите.























