Selenium ahol Cucumber (BDD Framework Tutorial)
โก Okos รถsszefoglalรณ
Selenium ahol Cucumber egy hatรฉkony viselkedรฉsvezรฉrelt fejlesztรฉsi (BDD) keretrendszert alkot, amely a Gherkin egyszerลฑ angol szintaxisรกt รถtvรถzi a Selenium WebDriver automatizรกlรกs. Ez az oktatรณanyag ismerteti az elลfeltรฉteleket, hรกrom gyakorlati forgatรณkรถnyvet mutat be, รฉs bemutatja, hogyan integrรกlรณdnak a funkciรณfรกjlok, a lรฉpรฉsdefinรญciรณk รฉs egy TestRunner osztรกly a bรถngรฉszลtesztek vรฉgrehajtรกsรกhoz.

Ebben az oktatรณanyagban megtudhatja, hogyan kell integrรกlni Cucumber ahol Selenium WebDriver segรญtsรฉgรฉvel egy viselkedรฉsvezรฉrelt fejlesztรฉsi (BDD) keretrendszert รฉpรญthetรผnk, amely olvashatรณ, karbantarthatรณ รฉs adatvezรฉrelt.
Mi a Cucumber?
Cucumber egy tesztelรฉsi eszkรถz, amely tรกmogatja a viselkedรฉsvezรฉrelt fejlesztรฉst (BDD). Egy alkalmazรกs viselkedรฉsรฉt รญrja le egyszerลฑ angol szรถveggel a Gherkin nyelv hasznรกlatรกval, amely lehetลvรฉ teszi a nem fejlesztลk szรกmรกra, hogy programozรกsi nyelv elsajรกtรญtรกsa nรฉlkรผl jรกruljanak hozzรก a tesztspecifikรกciรณkhoz. Tudjon meg tรถbbet a kรถvetkezล weboldalunkon: Cucumber oktatรณi.
Mi a Selenium?
Selenium egy automatizรกlรณ eszkรถz, amelyet a kรถvetkezลkre hasznรกlnak: Funkcionรกlis tesztelรฉs a webalapรบ alkalmazรกsokbรณl. Selenium tรถbb programozรกsi nyelvet tรกmogat, beleรฉrtve Java, Ruby, Python, รฉs C#, ami termรฉszetessรฉ teszi a vegyes technikai hรกttรฉrrel rendelkezล csapatok szรกmรกra. Tudjon meg tรถbbet a Selenium oktatรณi.
Miรฉrt hasznรกlja Cucumber ahol Selenium?
Cucumber รฉs a Selenium a kรฉt legszรฉlesebb kรถrben alkalmazott tesztelรฉsi technolรณgia. A legtรถbb szervezet mรกr hasznรกlja Selenium funkcionรกlis tesztelรฉshez รฉs rรฉtegezni szeretnรฉl Cucumber a tetejรฉn, mert Cucumber megkรถnnyรญti az alkalmazรกsfolyamat olvasรกsรกt รฉs megรฉrtรฉsรฉt.
Cucumber a viselkedรฉsvezรฉrelt fejlesztรฉsi keretrendszeren alapul, amely hรญdkรฉnt mลฑkรถdik a kรถvetkezล szerepkรถrรถk kรถzรถtt:
- Szoftvermรฉrnรถk รฉs รผzleti elemzล.
- Kรฉzi tesztelล รฉs automatizรกlรกsi tesztelล.
- Kรฉzi tesztelลk รฉs fejlesztลk.
Az Cucumber BDD keret is segรญt az รผgyfeleknek megรฉrteni az alkalmazรกskรณdot mivel a Gherkin nyelvet hasznรกlja, amely egyszerลฑ szรถveges formรกtumban van. A szervezet bรกrmely tagja kรถvetheti a szoftver viselkedรฉsรฉt. A Gherkin szintaxisa egyszerลฑ, olvashatรณ angol nyelven รญrรณdott, รญgy a specifikรกciรณ a nem mลฑszaki olvasรณk szรกmรกra is รฉrthetล.
Hasznรกlat elลfeltรฉtelei Cucumber ahol Selenium
Mielลtt elkezdenรฉnk a Cucumber-Selenium integrรกciรณhoz a kรถvetkezลkre van szรผksรฉged:
Selenium jar fรกjlok:
- Selenium-szerver-รถnรกllรณ
Letรถltheted ลket innen: https://www.selenium.dev/downloads/.
Jar fรกjlok ehhez: Cucumber:
- Cucumbermagos
- Cucumber-html
- Cobertura kรณd lefedettsรฉg
- Cucumber-Jรกva
- Cucumber-junit
- Cucumber-jvm-deps
- Cucumber-jelentรฉs
- Hamcrest-mag
- Ecetes uborka
- JUnit
Letรถltheted ลket innen: https://mvnrepository.com/search?q=CucumberMeg kell keresned az egyes jar fรกjlokat, รฉs egyesรฉvel kell letรถltened ลket.
Pรฉldรกul รญgy tรถltheti le az egyik jar fรกjlt, a โCucumber-coreโ kรถnyvtรกr.
Kattints a fenti letรถltรฉsi linkre. Ez รกtirรกnyรญt a Maven Repository webhelyรฉre. Most keresd meg a konkrรฉt jar fรกjlt (ebben az esetben โCucumber โMagโ), ahogy az az alรกbbi kรฉpernyลkรฉpen is lรกthatรณ:
A kรถvetkezล oldalon kattintson az 1.2.2-es verziรณra:
A kรถvetkezล kรฉpernyลn kattintson a Letรถltรฉs gombra a letรถltรฉshez Cucumber Alapvetล jar fรกjl:
Jegyzet: A kรฉnyelem รฉrdekรฉben รถsszecsomagoltuk a szรผksรฉges Maven jar fรกjlokat. itt Ezek a jar fรกjlok idลvel elavulttรก รฉs inkompatibilissรฉ vรกlhatnak, ezรฉrt azt javasoljuk, hogy a fent leรญrt mรณdszerrel tรถltsd le ลket.
Automatizรกlรกsi tesztelรฉs segรญtsรฉgรฉvel Cucumber ahol Selenium
Nรฉzzรผk รกt, hogyan kell hasznรกlni Cucumber ahol Selenium lรฉpรฉsrลl lรฉpรฉsre. Itt hรกrom forgatรณkรถnyvet fogunk รกttekinteni:
- 1. forgatรณkรถnyv: Szรถveg nyomtatรกsa a konzolon.
- 2. forgatรณkรถnyv: Adja meg a bejelentkezรฉsi hitelesรญtล adatokat, รฉs รกllรญtsa vissza az รฉrtรฉket.
- 3. forgatรณkรถnyv: Adja meg a bejelentkezรฉsi adatokat a kรถvetkezลn: Guru99-et รฉs az รฉrtรฉk visszaรกllรญtรกsa โ 3 adatkรฉszlettel ismรฉtelve.
1. forgatรณkรถnyv: Szรถveg nyomtatรกsa a konzolban
Ebben az esetben egyszerลฑen kinyomtatjuk a szรถveget a konzolon a kรถvetkezล hasznรกlatรกval: Cucumber.
Step 1) Hozz lรฉtre egy projektet a Eclipse.
Hozzon lรฉtre egy Java projekt a nรฉvvel "CucumberASelenium" ahogy az az alรกbbi kรฉpernyลkรฉpen is lรกthatรณ.
Step 2) Adja hozzรก a jar fรกjlokat a projekthez.
Jobb klikk a projekten > Tulajdonsรกgok > Java Build Path. Adja hozzรก az รถsszes korรกbban letรถltรถtt kรถnyvtรกrat.
Step 3) Hozz lรฉtre egy jellemzลfรกjlt.
Egy funkciรณfรกjl lรฉtrehozรกsรกhoz elลszรถr hozzon lรฉtre egy Jellemzลk mappรกt, ahogy az az alรกbbi kรฉpernyลkรฉpen lรกthatรณ.
รrja be a โJellemzลkโ mappanevet, majd kattintson a Befejezรฉs gombra.
Most hozzon lรฉtre egy funkciรณfรกjlt a Jellemzลk mappรกban, melynek neve: MyTest.featureA folyamat hasonlรณ egy mappa lรฉtrehozรกsรกhoz.
Jegyzet: Lehetsรฉges, hogy telepรญtenie kell a Cucumber Eclipse Elลszรถr a bลvรญtmรฉnyt. Menj a Sรบgรณ โ รj szoftver telepรญtรฉse menรผpontra, รฉs illeszd be a linket. http://cucumber.github.io/cucumber-eclipse/update-site/, รฉs telepรญtse.
Step 4) รrd le a forgatรณkรถnyveket.
Az alรกbbi sorok nyelven vannak รญrva MyTest.feature az uborka nyelv hasznรกlatรกval:
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 Magyarรกzat
1. sor) Meghatรกrozza az รผzleti funkcionalitรกst.
2. sor) Meghatรกroz egy tesztelni kรญvรกnt forgatรณkรถnyvet.
3. sor) Meghatรกrozza az elลfeltรฉtelt (Adott).
4. sor) Meghatรกrozza a vรฉgrehajtandรณ mลฑveletet (Mikor).
5. sor) Meghatรกrozza a vรกrhatรณ eredmรฉnyt vagy kimenetelt (Akkor).
Step 5) รrja a Selenium TestRunner szkript a kรถvetkezลhรถz: Cucumber keretrendszer tervezรฉse.
Hozzon lรฉtre egy TesztFunner csomagot, majd egy Runner.java osztรกlyfรกjl alatta.
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
{
}
A fentiekben Cucumber Java pรฉldรกul lefuttatjuk a uborka teszt a kรถvetkezล megjegyzรฉsek hasznรกlatรกval:
@RunWith() megmondja JUnit a tesztfuttatรณ osztรกlyrรณl, amely elkezdi a tesztjeink vรฉgrehajtรกsรกt.
@CucumberOpciรณk() beรกllรญtja a teszttulajdonsรกgokat, pรฉldรกul a jellemzลfรกjl elรฉrรฉsi รบtjรกt รฉs a lรฉpรฉsdefinรญciรณs ragasztรณcsomagot.
A TestRunner fรกjl kรฉpernyลkรฉpe:
Step 6) Hozza lรฉtre a Lรฉpรฉsdefinรญciรณ szkriptet.
Most hozzon lรฉtre a LรฉpรฉsDefinรญciรณ csomagot, majd egy Steps.java szkriptfรกjl alatta. A Steps.java belsejรฉben รญrjuk a Selenium logika, amely minden Gherkin-lรฉpรฉshez lekรฉpezลdik.
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.");
}
}
Az osztรกly neve Lรฉpรฉseiรฉs Cucumber Az annotรกciรณk minden metรณdust egy jellemzลfรกjl-lรฉpรฉshez rendelnek hozzรก:
@Adott meghatรกrozza a megnyitรกs mรณdjรกt Firefox รฉs indรญtsa el az alkalmazรกst.
@Amikor meghatรกrozza a felhasznรกlรณnรฉv รฉs jelszรณ megadรกsรกnak mรณdjรกt.
@Akkor meghatรกrozza a hitelesรญtล adatok visszaรกllรญtรกsรกnak mรณdszerรฉt.
Minden metรณdus egyszerลฑen kiรญr egy รผzenetet a konzolra.
Az alรกbbi kรฉpernyลkรฉp a Steps.java szkriptet รฉs a projektfรกt mutatja:
Jegyzet: A lรฉpรฉsdefinรญciรณ az a kรณd, amit szeretnรฉnk Cucumber akkor hajtรณdik vรฉgre, ha egy jellemzลfรกjl lรฉpรฉssel megegyezik.
Step 7) Hajtsa vรฉgre a szkriptet.
Futtassa ezt a szkriptet a TestRunner fรกjlbรณl (Runner.java) az alรกbbiak szerint.
Step 8) Elemezze a kimenetet.
A Runner.java futtatรกsakor Cucumber kinyomtatja a konzolra a Steps.java fรกjlban definiรกlt szรถveget.
2. forgatรณkรถnyv: Bejelentkezรฉsi hitelesรญtล adatok megadรกsa รฉs az รฉrtรฉk visszaรกllรญtรกsa
Itt adjuk meg a hitelesรญtล adatokat Guru99 demรณ bejelentkezรฉsi oldal รฉs az รฉrtรฉk visszaรกllรญtรกsa.
A 2. forgatรณkรถnyv esetรฉben csak frissรญtenรผnk kell Steps.javaItt adjuk hozzรก a valรณdi Selenium kรณd. Elลszรถr is gyลzลdjรถn meg arrรณl, hogy a Selenium jar fรกjl hozzรกadรณdik a projekthez.
Step 1) Frissรญtse a Steps.java szkriptet az alรกbbiak szerint.
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();
}
}
A fenti kรฉpernyลkรฉp Selenium forgatรณkรถnyv:
Step 2) Hajtsa vรฉgre a szkriptet.
A Steps.java frissรญtรฉse utรกn futtassa a Runner.java fรกjlt.
Step 3) Elemezd a kimenetet. A kimenetben a kรถvetkezลket fogod lรกtni:
- Elindult a bรถngรฉszล.
- Guru99 banki demรณoldal nyรญlik.
- A felhasznรกlรณnรฉv รฉs jelszรณ a bejelentkezรฉsi oldalon kerรผl megadรกsra.
- A Visszaรกllรญtรกs gomb tรถrli az รฉrtรฉkeket.
3. forgatรณkรถnyv: A bejelentkezรฉsi รฉs visszaรกllรญtรกsi folyamat futtatรกsa 3 adatkรฉszlettel
Itt mindkettลt frissรญtenรผnk kell Steps.java รฉs a funkciรณfรกjl, hogy ugyanazt a folyamatot hรกrom hitelesรญtลadat-kรฉszlettel vezesse.
Step 1) Frissรญtse a funkciรณfรกjlt az alรกbbiak szerint.
Az รกltalunk hasznรกlt Forgatรณkรถnyv vรกzlata รฉs a Pรฉldรกk szintaxis รญgy Cucumber ugyanazt a forgatรณkรถnyvet ismรฉtli meg minden adatsorban.
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 |
Step 2) Frissรญtse a Steps.java szkriptet.
Itt frissรญtjรผk a metรณdusok szignatรบrรกit, hogy paramรฉtereket fogadjanak el az Examples tรกblรกbรณl.
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();
}
}
Step 3) Hajtsa vรฉgre a frissรญtett szkriptet.
Az alรกbbi kรฉpernyล a sikeres vรฉgrehajtรกst รฉs az egyes adatkรฉszletek vรฉgrehajtรกsรกhoz szรผksรฉges idลt mutatja.
Step 4) Elemezze a kimenetet. A kรถvetkezล lรฉpรฉsek mindhรกrom adatkรฉszlet esetรฉben ismรฉtlลdnek:
- Elindult a bรถngรฉszล.
- Guru99 banki demรณoldal nyรญlik.
- A felhasznรกlรณnรฉv รฉs jelszรณ a bejelentkezรฉsi oldalon kerรผl megadรกsra.
- A Visszaรกllรญtรกs gomb tรถrli az รฉrtรฉkeket.























