要在 Java 中配置 Selenium UI 自动化测试 并生成 Cucumber 报告,通常需要以下几个步骤。

👨💻 Author: Moshow郑锴 ⚡ Powered by: https://zhengkai.blog.csdn.net/
🛠️ 1. 添加 Maven 依赖
在 pom.xml
中加入以下依赖:
XML
<dependencies>
<!-- Cucumber 核心 -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>7.17.0</version>
<scope>test</scope>
</dependency>
<!-- Cucumber JUnit -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>7.17.0</version>
<scope>test</scope>
</dependency>
<!-- Selenium WebDriver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.25.0</version>
<scope>test</scope>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 报告插件 -->
<build>
<plugins>
<plugin>
<groupId>net.masterthought</groupId>
<artifactId>maven-cucumber-reporting</artifactId>
<version>5.8.0</version>
<executions>
<execution>
<id>generate-cucumber-reports</id>
<phase>verify</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<projectName>UI Automation</projectName>
<outputDirectory>${project.build.directory}/cucumber-reports</outputDirectory>
<cucumberOutput>${project.build.directory}/cucumber.json</cucumberOutput>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
📂 2. 项目目录结构
推荐的分层结构:
Groovy
src/test/java
├─ stepdefs/ # 步骤定义
│ └─ LoginStep.java
├─ pages/ # Page Object
│ └─ LoginPage.java
├─ runners/ # 测试运行器
│ └─ TestRunner.java
└─ hooks/ # 钩子(截图、清理)
└─ ScreenshotHook.java
src/test/resources
└─ features/
└─ login.feature
📝 3. Feature 文件 (BDD 场景)
src/test/resources/features/login.feature
Groovy
Feature: Login Functionality
Scenario: User logs in successfully
Given I open the login page
When I enter username "testuser" and password "password123"
And I click login
Then I should see the homepage
💻 4. Step Definitions
LoginStep.java
java
package stepdefs;
import io.cucumber.java.en.*;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import pages.LoginPage;
public class LoginStep {
WebDriver driver;
LoginPage loginPage;
@Given("I open the login page")
public void i_open_the_login_page() {
driver = new ChromeDriver();
driver.get("https://example.com/login");
loginPage = new LoginPage(driver);
}
@When("I enter username {string} and password {string}")
public void i_enter_credentials(String username, String password) {
loginPage.enterUsername(username);
loginPage.enterPassword(password);
}
@When("I click login")
public void i_click_login() {
loginPage.clickLogin();
}
@Then("I should see the homepage")
public void i_should_see_homepage() {
loginPage.verifyHomePage();
driver.quit();
}
}
🏗️ 5. Page Object 示例
LoginPage.java
java
package pages;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class LoginPage {
WebDriver driver;
By usernameField = By.id("username");
By passwordField = By.id("password");
By loginButton = By.id("login");
public LoginPage(WebDriver driver) {
this.driver = driver;
}
public void enterUsername(String username) {
driver.findElement(usernameField).sendKeys(username);
}
public void enterPassword(String password) {
driver.findElement(passwordField).sendKeys(password);
}
public void clickLogin() {
driver.findElement(loginButton).click();
}
public void verifyHomePage() {
assert driver.getTitle().contains("Home");
}
}
▶️ 6. 测试运行器
TestRunner.java
java
package runners;
import org.junit.runner.RunWith;
import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/features",
glue = {"stepdefs"},
plugin = {
"pretty",
"json:target/cucumber.json",
"html:target/cucumber-html-report"
}
)
public class TestRunner {
}
📊 7. 生成报告
执行命令:
bash
mvn clean verify
-
运行后会生成:
-
target/cucumber.json
-
target/cucumber-html-report/index.html
-
target/cucumber-reports/
下的 美观 HTML 报告 (由maven-cucumber-reporting
插件生成)
-
✅ 总结
-
依赖:引入 Selenium + Cucumber + 报告插件
-
结构:分层(Feature → StepDefs → PageObject)
-
运行器 :配置
CucumberOptions
输出 JSON/HTML -
报告 :用
maven-cucumber-reporting
生成可视化报告 -
👨💻 Author: Moshow郑锴 ⚡ Powered by: https://zhengkai.blog.csdn.net/