Selenium met Cucumber (BDD-framework)


In deze tutorial leert u hoe u kunt integreren Cucumber met Selenium Webdriver.

Wat is Cucumber?

Cucumber is een testaanpak die Behavior Driven Development (BDD) ondersteunt. Het legt het gedrag van de applicatie uit in een eenvoudige Engelse tekst in de augurktaal.

Meer informatie op – https://www.guru99.com/cucumber-tutorials.html

Wat is Selenium?

Selenium is een automatiseringstool voor Functioneel testen van de webgebaseerde applicatie. Selenium ondersteunt verschillende talen zoals Java, Ruby, Python C#, enz.

Meer informatie op – https://www.guru99.com/selenium-tutorial.html

Waarom gebruik maken van Cucumber met Selenium?

Cucumber en Selenium zijn twee populaire technologieën.

De meeste organisaties gebruiken Selenium voor functionele testen. Deze organisaties die gebruik maken van Selenium, willen integreren Selenium met Cucumber as Cucumber merken het is gemakkelijk om de applicatiestroom te lezen en te begrijpen.

Cucumber tool is gebaseerd op het Behavior Driven Development-framework fungeert als brug tussen de volgende personen:

  1. Software Engineer en Business Analist.
  2. Handmatige tester en automatiseringstester.
  3. Handmatige testers en ontwikkelaars.

Cucumber BDD-framework ook Het is voor de klant een voordeel om de applicatiecode te begrijpen omdat het Gherkin-taal gebruikt, wat in platte tekst is. Iedereen in de organisatie kan het gedrag van de software begrijpen. De syntaxis van Gherkin is in eenvoudige tekst die leesbaar en begrijpelijk is.

Cucumber met Selenium

Voorwaarde voor gebruik Cucumber met Selenium

Voor we beginnen Cucumber Selenium integratie, hebben we de volgende items nodig:

  • Selenium jar-bestanden:
  • Selenium-server-standalone

Te downloaden op http://www.seleniumhq.org/download/

Voorwaarde voor gebruik Cucumber met Selenium

Jar-bestanden voor Cucumber :

  • Cucumber-core
  • Cucumber-html
  • Cobertura-codedekking
  • Cucumber-Java
  • Cucumber-junit
  • Cucumber-jvm-deps
  • Cucumber-rapportage
  • Hamcrest-kern
  • augurkje
  • Juniet

Te downloaden op https://mvnrepository.com/search?q=Cucumber

U moet bestanden zoeken en ze één voor één downloaden.

We laten u bijvoorbeeld zien hoe u een van de jar-bestanden downloadt, dat wil zeggen: “Cucumber-kern."

Klik op de bovenstaande downloadlink. Het verwijst door naar de onderstaande site. Zoek nu in de betreffende pot, bijvoorbeeld 'Cucumber Kern' zoals hieronder weergegeven screenshot:

Voorwaarde voor gebruik Cucumber met Selenium

Klik op de volgende pagina op versie 1.2.2,

Voorwaarde voor gebruik Cucumber met Selenium

In het volgende scherm klikt u op downloaden om de 'Cucumber Core' jar-bestand.

Voorwaarde voor gebruik Cucumber met Selenium

Note: Voor uw gemak hebben we de jar-bestanden gebundeld die u van Maven moet downloaden hier. Na verloop van tijd kunnen deze potten worden bijgewerkt en incompatibel worden. U wordt verzocht deze te downloaden via de hierboven geïllustreerde methode.

Automatisering testen met behulp van Cucumber met Selenium.

Laten we de stappen bestuderen die we kunnen gebruiken Cucumber met selenium stap voor stap. Hier zullen we 3 scenario's behandelen:

  • Scenario 1: Tekst afdrukken in de console.
  • Scenario 2: Voer de inloggegevens in en reset de waarde.
  • Scenario 3: Voer inloggegevens in op Guru99 en reset de waarde. Doe dit voor 3 sets gegevens.

Scenario 1: Tekst afdrukken in de console.

In dit scenario drukken we gewoon de tekst in de console af met behulp van Cucumber.

Stap 1) Project maken in Eclipse.

creëren Java project met de naam “CucumbermetSelenium', zoals weergegeven in de onderstaande schermafbeelding.

Automatisering testen met behulp van Cucumber met Selenium

Automatisering testen met behulp van Cucumber met Selenium

Stap 2) Jar-bestanden toevoegen aan het project.

Klik met de rechtermuisknop op het project > Selecteer Eigenschappen > Ga naar Java Bouw pad. Voeg alle eerder gedownloade bibliotheken toe.

Automatisering testen met behulp van Cucumber met Selenium

Stap 3) Functiebestand maken

Voor het maken van een featurebestand maakt u eerst een featuresmap aan, zoals weergegeven onder de schermafbeelding.

Automatisering testen met behulp van Cucumber met Selenium

Voer nu de mapnaam 'Functies' in en klik op de knop 'Voltooien'.

Automatisering testen met behulp van Cucumber met Selenium

Automatisering testen met behulp van Cucumber met Selenium

Maak nu een featurebestand aan in de map 'Features' met de naam 'MyTest.feature' – Het proces is vergelijkbaar met het maken van een map

Automatisering testen met behulp van Cucumber met Selenium

Opmerking: Mogelijk moet u de Cucumber Eclipse Plug-in om dit te laten werken. Ga naar — Helps->Nieuwe software installeren->kopieer en plak de link http://cucumber.github.io/cucumber-eclipse/update-site/ en installeer

Stap 4) Schrijf scenario's.

De onderstaande regels zijn geschreven in het bestand 'MyTest.feature' met behulp van de Gherkin-taal, zoals hieronder weergegeven:

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 Uitleg

Lijn 1) In deze regel schrijven we bedrijfsfunctionaliteit.

Lijn 2) In deze regel schrijven we een scenario om te testen.

Lijn 3) In deze regel definiëren we de randvoorwaarde.

Lijn 4) In deze regel definiëren we de actie die we moeten uitvoeren.

Lijn 4) In deze regel definiëren we de verwachte uitkomst of resultaat.

Stap 5) Selenium testrunner-script schrijven voor Selenium Cucumber raamwerk ontwerp

Hier maken we het pakket 'TestRunner' en vervolgens het klassenbestand 'Runner.java' eronder.

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 				
{		

}

In bovenstaande Cucumber Java voorbeeldcode, voeren we de komkommer proef door gebruik te maken van de volgende aantekeningen:

@Rennen met() annotatie vertelt over de testrunnerklasse om onze tests uit te voeren.

@KomkommerOpties() annotatie wordt gebruikt om enkele eigenschappen voor onze komkommertest in te stellen, zoals featurebestand, stapdefinitie, enz.

Schermafbeelding van het TestRunner-bestand.

Automatisering testen met behulp van Cucumber met Selenium

Stap 6) Stapdefinitiescript maken.

Nu maken we hier het 'StepDefinition'-pakket en vervolgens het 'Steps.java'-scriptbestand eronder. Hier schrijven we eigenlijk een selenium-script om de test uit te voeren onder Cucumber werkwijzen.

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.");					
    }		

}

In de bovenstaande code wordt de klasse gemaakt met de naam 'Steps.' Cucumber annotatie wordt gebruikt om het featurebestand in kaart te brengen. Elke annotatiemethode is gedefinieerd:

@Gegeven annotatie definieer methode om Firefox te openen en de applicatie te starten

@Wanneer annotatie definieermethode om de gebruikersnaam en het wachtwoord in te voeren

@Dan annotatie definieer methode om de referentie opnieuw in te stellen

Bij elke methode drukken we alleen een bericht af.

Hieronder ziet u de schermafbeelding van het 'Steps.java'-script en de projectboom, hoe deze eruit ziet.

Automatisering testen met behulp van Cucumber met Selenium

Opmerking: Stapdefinitie is niets anders dan de stappen die u wilt uitvoeren onder deze komkommermethode.

Stap 7) Het script uitvoeren.

De gebruiker kan dit script uitvoeren vanuit het Test Runner-script, dat wil zeggen 'Runner.java', zoals weergegeven in onderstaande schermafbeelding.

Automatisering testen met behulp van Cucumber met Selenium

Stap 8) Analyseer de uitvoer.

Bij het uitvoeren van het script 'Runner.java' wordt de tekst op de console weergegeven. Het is dezelfde tekst die is gedefinieerd in het script 'Steps.java'.

Automatisering testen met behulp van Cucumber met Selenium

Scenario 2: Voer de inloggegevens in en reset de waarde.

Hier voeren we gewoon de inloggegevens in op de Guru99 demo-inlogpagina en resetten we de waarde

Voor Scenario 2 hoeven we alleen het script 'Steps.java' te updaten. Hier schrijven we het seleniumscript zoals hieronder getoond. Eerst moeten we toevoegen Selenium jar-bestand naar dit project.

Voer de inloggegevens in en reset de waarde

Stap 1) Hier updaten we het 'Steps.java'-script zoals weergegeven in de onderstaande code en schermafbeelding.

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();					
    }		
}		

Screenshot van bovenstaand seleniumscript.

Voer de inloggegevens in en reset de waarde

Stap 2) Voer het script uit.

Na het updaten voeren we Runner.java uit.

Stap 3) Analyseer de uitvoer.

In de uitvoer ziet u het volgende:

  • Browser gelanceerd.
  • De demosite van de Guru99-bank wordt geopend.
  • Gebruikersnaam en wachtwoord worden op de inlogpagina geplaatst.
  • Reset de waarden.

Voer de inloggegevens in en reset de waarde

Scenario 3: Voer inloggegevens in op Guru99 en reset de waarde. Doe dit voor 3 sets gegevens.

Hier moeten we zowel 'Step.java' als het featurebestand bijwerken.

Stap 1) Update het featurebestand zoals hieronder weergegeven:

Here we update the feature file with 'Scenario Outline' and  'examples' syntax.

Feature: Reset functionality on login page of Application				


Scenario Outline: Verification of reset button with numbers of credential


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        |

// In this line we define the set of data.

Voer inloggegevens in

Stap 2) Werk nu het Step.java-script bij.

Hier werken we de methoden bij om de parameters door te geven, het bijgewerkte script hieronder weergegeven:

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("www.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();					
    }		
}		

Voer inloggegevens in

Stap 3) Voer nu het bijgewerkte script uit.

Het onderstaande scherm toont de succesvolle uitvoering van het script en de tijd die elke set gegevens in beslag neemt.

Voer inloggegevens in

Stap 4) Analyseer de uitvoer.

In de uitvoer ziet u het volgende:

De onderstaande uitvoer wordt herhaald voor het aantal datasets, dat wil zeggen 3 sets.

  • Browser gelanceerd.
  • De demosite van de Guru99-bank wordt geopend.
  • Gebruikersnaam en wachtwoord worden op de inlogpagina geplaatst.
  • Reset de waarden.

Voer inloggegevens in

Conclusie

Cucumber is een zeer populaire BDD-tool. Het is gemakkelijk te lezen en kan worden begrepen door alle belanghebbenden, inclusief technische en niet-technische personen.

Cucumber kan worden geïntegreerd met Selenium met behulp van de volgende 3 stappen

  1. Creëer een featurebestand waarin de feature en scenario's stap voor stap worden gedefinieerd met behulp van de Augurk-taal.
  2. Maak een Testrunner-bestand. In dit bestand hebben we geïntegreerd Cucumber met BDD-framework in Selenium. Wij voeren dit script uit.
  3. Creat Step definitie, het daadwerkelijke selenium-script dat onder dit pakket is gedefinieerd.

Lees Verder readmore