当前位置: 首页 > news >正文

Java 中配置 Selenium UI 自动化测试 并生成 Cucumber 报告

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

👨‍💻 Author: Moshow郑锴  ⚡ Powered by: https://zhengkai.blog.csdn.net/

🛠️ 1. 添加 Maven 依赖

pom.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. 项目目录结构

推荐的分层结构:

src/test/java├─ stepdefs/        # 步骤定义│    └─ LoginStep.java├─ pages/           # Page Object│    └─ LoginPage.java├─ runners/         # 测试运行器│    └─ TestRunner.java└─ hooks/           # 钩子(截图、清理)└─ ScreenshotHook.javasrc/test/resources└─ features/└─ login.feature

📝 3. Feature 文件 (BDD 场景)

src/test/resources/features/login.feature

Feature: Login FunctionalityScenario: User logs in successfullyGiven I open the login pageWhen I enter username "testuser" and password "password123"And I click loginThen I should see the homepage

💻 4. Step Definitions

LoginStep.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

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

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. 生成报告

执行命令:

mvn clean verify
  • 运行后会生成:

    • target/cucumber.json

    • target/cucumber-html-report/index.html

    • target/cucumber-reports/ 下的 美观 HTML 报告(由 maven-cucumber-reporting 插件生成)

✅ 总结

  1. 依赖:引入 Selenium + Cucumber + 报告插件

  2. 结构:分层(Feature → StepDefs → PageObject)

  3. 运行器:配置 CucumberOptions 输出 JSON/HTML

  4. 报告:用 maven-cucumber-reporting 生成可视化报告

  5. 👨‍💻 Author: Moshow郑锴  ⚡ Powered by: https://zhengkai.blog.csdn.net/

http://www.dtcms.com/a/403603.html

相关文章:

  • SAP中BAPI_MATERIAL_SAVEDATA分析和使用
  • 云手机能否稳定的运行传奇游戏
  • 做网站应该先从什么地方开始西宁seo快速排名
  • Tomcat 相关漏洞扫描器(二)
  • PyTorch张量切片的陷阱:视图与副本
  • 旅游酒店网站建设零基础可以学平面设计吗
  • 哪里学网站开发店铺设计图片
  • 小淇云库-Docker 新手入门:容器创建、镜像打包与数据卷管理基础
  • Docker 部署 Ollama 详细教程以及镜像高速下载地址
  • Rust数组与向量
  • 【LeetCode 每日一题】1886. 判断矩阵经轮转后是否一致
  • linux下进程coredump分析
  • 【数据结构学习篇】--栈和stack
  • 钻研视频——破细节
  • 网站建设哪家某网站项目策划书
  • 网站建设制作设计公司佛山内蒙网站建设赫伟创意星空科技
  • 上海网站seo策划设计工具
  • 声明式事务6
  • 南京建设网站公司做车品的网站
  • Next.js动态路由介绍([projectId]/page.tsx:动态路由参数、参数占位符、动态参数、动态数据)无需预创建目录、共享页面逻辑
  • Java核心之泛型
  • 直播进入“智”时代!智享 AI 驱动个性化内容,升级高效互动场景
  • 河南襄县做网站的公司查企业官网
  • Linux:fork()函数详解:原理、用法及经典面试题解析
  • tensorflow卷积层1——卷积和池化
  • tensorflow加载和预处理数据
  • DAY 03 CSS的认识
  • 黑群晖做php网站pc网站手机网站
  • Jakarta EE 实验 — Web 聊天室(过滤器、监听器版)
  • 做js题目的网站知乎抖音代运营公司合法吗