Selenium Java BDD
- Home
- Selenium Java BDD
Using Selenium with Java and BDD is a popular and robust approach for web automation testing. The typical stack includes:
Common Tech Stack
Tool | Purpose |
---|---|
Selenium WebDriver | Web automation |
Cucumber | BDD framework using Gherkin |
JUnit/TestNG | Test runner |
Maven/Gradle | Dependency management |
ChromeDriver | Browser control |
1. Maven Setup (pom.xml
)
Add these dependencies:
<dependencies>
<!-- Selenium -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.20.0</version>
</dependency>
<!-- Cucumber -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.15.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>7.15.0</version>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
2. Folder Structure
src/test/java/
├── runner/
│ └── TestRunner.java
├── stepdefs/
│ └── LoginSteps.java
├── pages/
│ └── LoginPage.java
└── features/
└── login.feature
3. Feature File (login.feature
)
Feature: Login Functionality
Scenario: Successful login
Given I open the login page
When I enter valid credentials
And I click the login button
Then I should be redirected to the homepage
4. Step Definitions (LoginSteps.java
)
package stepdefs;
import io.cucumber.java.en.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import static org.junit.Assert.*;
public class LoginSteps {
WebDriver driver;
@Given("I open the login page")
public void openLoginPage() {
driver = new ChromeDriver();
driver.get("https://example.com/login");
}
@When("I enter valid credentials")
public void enterCredentials() {
driver.findElement(By.id("username")).sendKeys("testuser");
driver.findElement(By.id("password")).sendKeys("testpass");
}
@And("I click the login button")
public void clickLogin() {
driver.findElement(By.id("login")).click();
}
@Then("I should be redirected to the homepage")
public void verifyLogin() {
assertTrue(driver.findElement(By.id("logout")).isDisplayed());
driver.quit();
}
}
5. Cucumber Runner (TestRunner.java
)
package runner;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/java/features",
glue = "stepdefs",
plugin = {"pretty", "html:target/cucumber-reports.html"},
monochrome = true
)
public class TestRunner {}
6. Running Tests
In your IDE or terminal:
mvn test