How to use Datatable in cucumber


How to implement Datatable in cucumber

How to use Datatable in Cucumber


In my previous post How to install and configure cucumber -java  I have discussed how to install Cucumber and how to run cucumber program in java. In the previous post, I did not show how to parameterize the data. Means previously we passed parameters in the step line. Now we declared the variable in the feature file. So we are using Tables as arguments to Steps. 

I have created one feature file named: dataDriven.feature under com.Cucumber.features package.

how to user cucumber datatable

dataDriven.feature is almost same as the previous demo.feature . The only difference is the "when" .
previously it was " When I enter password and username" and now 

When I provide password and username
      | testname | [email protected] |




dataTable feature file 
 Feature: Login Application  
  As a user  
  I want to login to the application  
  Scenario: Valid user name and password  
   Given I launch the url "https://www.fb.com"  
   When I provide password and username  
    | testname | [email protected] |  
   And I click on login button  
   Then I should see the login page  

Now we need to write down the step file. As you see there are very few changes in scenario/feature file so we can re use all the methods except the step written under "@when"

The implementation of the @when step


 @When("^I provide password and username$")  
  public void i_enter_password_and_username(DataTable rawdata) throws Throwable {  
    // Write code here that turns the phrase above into concrete actions  
  List<List<String>> data = rawdata.raw();  
  driver.findElement(By.name("email")).sendKeys(data.get(0).get(0));  
  driver.findElement(By.name("pass")).sendKeys(data.get(0).get(1));   
  }   


The complete steps 

 package com.Cucumber.steps; import java.util.List;  
 import org.openqa.selenium.By;  
 import org.openqa.selenium.OutputType;  
 import org.openqa.selenium.TakesScreenshot;  
 import org.openqa.selenium.WebDriver;  
 import org.openqa.selenium.WebDriverException;  
 import org.openqa.selenium.chrome.ChromeDriver;  
 import org.testng.Assert;  
 import cucumber.api.DataTable;  
 import cucumber.api.Scenario;  
 import cucumber.api.java.After;  
 import cucumber.api.java.en.Given;  
 import cucumber.api.java.en.Then;  
 import cucumber.api.java.en.When;  
 public class DemoLoginSteps {  
  WebDriver driver;  
  @Given("^I launch the url \"([^\"]*)\"$")  
  public void i_launch_the_url(String arg1) throws Throwable {  
    // Write code here that turns the phrase above into concrete actions  
  System.setProperty("webdriver.chrome.driver", "C:\\Users\\anjan\\Desktop\\cucmber\\chromedriver\\chromedriver.exe");  
  driver = new ChromeDriver();  
  driver.get("http://www.fb.com");  
  }  
  @When("^I click on login button$")  
  public void i_click_on_login_button() throws Throwable {  
    // Write code here that turns the phrase above into concrete actions  
  driver.findElement(By.xpath("//*[@data-testid='royal_login_button']")).click();  
  }  
  @Then("^I should see the login page$")  
  public void i_should_see_the_Error_message() throws Throwable {  
  try{  
    // Write code here that turns the phrase above into concrete actions  
   if(driver.findElement(By.name("email")).isDisplayed()){  
   Assert.assertTrue(true);  
   }else  
   Assert.assertTrue(false);  
  }catch(Exception NoSuchElementException){  
   Assert.assertTrue(false);  
  }finally{  
   driver.quit();  
  }  
  }  
  @When("^I provide password and username$")  
  public void i_enter_password_and_username(DataTable rawdata) throws Throwable {  
    // Write code here that turns the phrase above into concrete actions  
  List<List<String>> data = rawdata.raw();  
  driver.findElement(By.name("email")).sendKeys(data.get(0).get(0));  
  driver.findElement(By.name("pass")).sendKeys(data.get(0).get(1));   
  }  
 }  




If you want to execute cucumber test from testng xml or just left click on feature file and Run As Cucumber Feature.


Share this

Related Posts

Previous
Next Post »