You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java基于Selenium实现RestAssured API与UI框架的集成

Java+Maven栈下RestAssured侧调用Selenium UI框架实现方案

1. 前置Maven依赖配置

<!-- RestAssured 依赖 -->
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>5.3.0</version>
    <scope>test</scope>
</dependency>
<!-- Selenium 依赖 -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.9.1</version>
</dependency>
<!-- 测试框架可选TestNG/JUnit -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.7.1</version>
    <scope>test</scope>
</dependency>

2. 核心实现逻辑

RestAssured和Selenium都运行在同一个Java进程内,无需跨服务调用,直接在API测试的执行链路中嵌入Selenium的操作逻辑即可,核心步骤如下:

  • 先封装Selenium UI公共操作工具类,统一管理WebDriver的初始化、销毁、常用页面操作,推荐用ThreadLocal存储WebDriver实例,适配多线程用例执行场景,避免实例冲突
  • 在RestAssured的API测试用例中,按需调用封装好的Selenium工具类方法即可,比如API侧创建完数据后,直接唤起浏览器访问前端页面校验数据展示效果

3. 代码示例

// Selenium工具类封装
public class SeleniumUtil {
    private static ThreadLocal<WebDriver> driverThreadLocal = new ThreadLocal<>();

    // 初始化浏览器
    public static WebDriver initDriver() {
        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driverThreadLocal.set(driver);
        return driver;
    }

    // 获取当前线程的driver实例
    public static WebDriver getDriver() {
        return driverThreadLocal.get();
    }

    // 销毁浏览器实例
    public static void quitDriver() {
        if (getDriver() != null) {
            getDriver().quit();
            driverThreadLocal.remove();
        }
    }
}

// API+UI集成测试用例
public class Api2UiTest {
    @Test
    public void testCreateDataAndCheckUi() {
        // 第一步:调用RestAssured发起API请求创建数据
        String createDataId = given()
                .contentType("application/json")
                .body("{\"name\":\"测试数据\"}")
                .when()
                .post("/api/data/create")
                .then()
                .statusCode(200)
                .extract()
                .path("data.id");

        // 第二步:调用Selenium UI框架校验前端展示
        SeleniumUtil.initDriver();
        WebDriver driver = SeleniumUtil.getDriver();
        driver.get("http://前端页面地址/" + createDataId);
        // 校验数据是否正常展示
        String showName = driver.findElement(By.id("data-name")).getText();
        assert showName.equals("测试数据");
        
        // 销毁浏览器实例
        SeleniumUtil.quitDriver();
    }
}

注意:如果不需要每次用例都重新启动浏览器,可以调整WebDriver的生命周期管理逻辑,比如整套用例执行完再销毁实例,减少执行耗时

内容的提问来源于stack exchange,提问作者Pavani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:06:04