To execute our first cucumber script for selenium we need to follow the below steps –
01. Create a maven project in eclipse
02. Add the following dependency on POM.xml
<dependencies> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> <version>1.1.2</version> <scope>test</scope> </dependency> <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> <version>1.1.2</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.45.0</version> </dependency> </dependencies>
03. Now create “StepDefinition.java”, “CucumberExecutor.java” and “Test_FF_01.feature” file in the following structure –
04. “StepDefinition.java” should contain the following code –
package org.sample; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import cucumber.api.java.en.And; import cucumber.api.java.en.Given; import cucumber.api.java.en.Then; import cucumber.api.java.en.When; public class StepDefinition { public WebDriver driver ; @Given("^open firefox$") public void open_firefox(){ driver = new FirefoxDriver(); driver.manage().window().maximize(); } @Given("^open ie$") public void open_ie(){ System.setProperty("webdriver.ie.driver", "src/test/resources/IEDriverServer.exe"); driver = new InternetExplorerDriver(); driver.manage().window().maximize(); } @And("^browse google$") public void browse_google(){ driver.get("http://google.co.in"); } @When("^I enter the keyword$") public void I_enter_the_keyword(){ WebElement searchBox = driver.findElement(By.xpath(".//*[@id='lst-ib']")); WebElement searchBtn = driver.findElement(By.xpath(".//*[@id='sblsbb']/button")); searchBox.clear(); searchBox.sendKeys("tanmaysarkar.com"); searchBtn.click(); } @And("^take first website from the result$") public void take_first_website_from_the_result() throws InterruptedException{ Thread.sleep(3000); WebElement firstResult = driver.findElement(By.xpath(".//*[@id='rso']/div[2]/li[1]/div/h3/a")); firstResult.click(); } @Then("^I should be my desired page$") public void I_should_be_my_desired_page(){ System.out.println("Page Title should contain Tanmay : " + driver.getTitle().contains("Tanmay")); driver.quit(); } }
05. “CucumberExecutor.java” should contain the following sample code –
package org.sample; import org.junit.runner.RunWith; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @Cucumber.Options(format={"pretty","html:reports/test-report"},tags= "@smokeTest") public class CucumberExecutor { }
06. Open “Test_FF_01.feature” file and provide the steps
@smokeTest Feature: search a website in google Scenario: Provide keyword and navigate to website Given open firefox And browse google When I enter the keyword And take first website from the result Then I should be my desired page
07. Now execute the executor and if everything goes well the output should be –
That’s it. 🙂