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

SpringBoot中Selenium详解

文章目录

  • SpringBoot中Selenium详解
    • 一、引言
    • 二、集成Selenium
      • 1、环境准备
        • 1.1、添加依赖
      • 2、编写测试代码
        • 2.1、测试主类
        • 2.2、页面对象
        • 2.3、搜索组件
    • 三、使用示例
    • 四、总结

SpringBoot中Selenium详解

一、引言

在现代软件开发中,自动化测试是提高软件质量、减少重复工作的重要手段。Selenium 是一个强大的自动化测试工具,它支持多种编程语言和浏览器,能够模拟用户对网页的操作。Spring Boot 作为一个轻量级的Java应用框架,与 Selenium 结合可以极大地提高开发效率和测试的便利性。本文将详细介绍如何在 SpringBoot 中集成 Selenium,并给出具体的代码示例。

二、集成Selenium

1、环境准备

在开始之前,确保你已经安装了Java开发环境和Maven构建工具。你还需要下载对应版本的ChromeDriver或GeckoDriver,以便Selenium能够控制浏览器。

1.1、添加依赖

在SpringBoot项目的pom.xml文件中添加Selenium和TestNG的依赖:

<dependencies>
    <!-- selenium -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
    <!-- TestNG -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>RELEASE</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

2、编写测试代码

2.1、测试主类

创建一个测试类,继承SpringBaseTestNGTest,并注入页面对象和截图工具:

package com.et.selenium;

import com.et.selenium.page.google.GooglePage;
import com.et.selenium.util.ScreenShotUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.IOException;

public class GoogleSearch1Test extends SpringBaseTestNGTest {
    @Autowired
    private GooglePage googlePage;
    @Lazy
    @Autowired
    private ScreenShotUtil screenShotUtil;

    @Test
    public void GoogleTest() throws IOException, InterruptedException {
        this.googlePage.goToGooglePage();
        Assert.assertTrue(this.googlePage.isAt());
        this.googlePage.getSearchComponent().search("spring boot");
        Assert.assertTrue(this.googlePage.getSearchResult().isAt());
        Assert.assertTrue(this.googlePage.getSearchResult().getCount() > 2);
        System.out.println("Number of Results: " + this.googlePage.getSearchResult().getCount());
        Thread.sleep(3000);
        this.screenShotUtil.takeScreenShot("Test.png");
        this.googlePage.close();
    }
}
2.2、页面对象

创建GooglePage页面对象,包含打开页面和获取搜索组件的方法:

package com.et.selenium.page.google;

import com.et.selenium.annotation.Page;
import com.et.selenium.page.Base;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;

@Page
public class GooglePage extends Base {
    @Autowired
    private SearchComponent searchComponent;
    @Autowired
    private SearchResult searchResult;
    @Value("${application.url}")
    private String url;

    public void goToGooglePage() {
        this.driver.get(url);
    }

    public SearchComponent getSearchComponent() {
        return searchComponent;
    }

    public SearchResult getSearchResult() {
        return searchResult;
    }

    @Override
    public boolean isAt() {
        return this.searchComponent.isAt();
    }

    public void close() {
        this.driver.quit();
    }
}
2.3、搜索组件

创建SearchComponent类,包含搜索方法:

package com.et.selenium.page.google;

import com.et.selenium.annotation.PageFragment;
import com.et.selenium.page.Base;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import java.util.List;

@PageFragment
public class SearchComponent extends Base {
    @FindBy(name = "q")
    private WebElement searchBox;
    @FindBy(name="btnK")
    private List<WebElement> searchBtns;

    public void search(final String keyword) {
        this.searchBox.sendKeys(keyword);
        this.searchBox.sendKeys(Keys.TAB);
        this.searchBtns.stream()
                .filter(e -> e.isDisplayed() && e.isEnabled())
                .findFirst()
                .ifPresent(WebElement::click);
    }

    @Override
    public boolean isAt() {
        return this.wait.until(driver1 -> this.searchBox.isDisplayed());
    }
}

三、使用示例

上述代码展示了如何在SpringBoot中集成Selenium,并进行了一个简单的Google搜索测试。通过注入页面对象和截图工具,我们可以轻松地对网页进行自动化操作,并在测试完成后保存截图。

四、总结

SpringBoot与Selenium的结合使得自动化测试变得更加简单和高效。通过上述步骤,你可以快速地在你的项目中集成Selenium,并编写自动化测试用例。这不仅提高了测试的覆盖率,也减少了手动测试的工作量。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Spring Boot集成selenium实现自动化测试_springboot selenium-CSDN博客

http://www.kler.cn/a/428485.html

相关文章:

  • 论文速读|NoteLLM: A Retrievable Large Language Model for Note Recommendation.WWW24
  • 我的图形布局 组织结构图布局
  • CSRF漏洞学习总结
  • 【JDBC】数据库连接的艺术:深入解析数据库连接池、Apache-DBUtils与BasicDAO
  • 最小距离和与带权最小距离和
  • 3.1 Go函数调用过程
  • RPA系列-uipath 学习笔记1
  • C++ Lambda表达式:语法、特点和原理
  • C++ 完美转发和左值右值
  • Oracle 12C DataGuard GAP 修复过程(RECOVER … FROM SERVICE)
  • 关于利用 EtherNet/IP 转 Profinet 网关模块实现罗克韦尔变频器接入西门子 PLC 的配置范例
  • Few Examples in MetaGPT
  • ORB-SLAM3源码学习:ImuTypes.cc:Eigen::Matrix3f RightJacobianSO3计算右雅可比矩阵
  • 跟着问题学15——GRU网络结构详解及代码实战
  • 计算机毕业设计hadoop+spark+hive图书推荐系统 豆瓣图书数据分析可视化大屏 豆瓣图书爬虫 知识图谱 图书大数据 大数据毕业设计 机器学习
  • 【集群划分】含分布式光伏的配电网集群电压控制【33节点】
  • 入门Web自动化测试之元素定位进阶技巧
  • 用二维图像渲染3D场景视频
  • 《图神经网络编程实战:开启深度学习新领域》
  • Android显示系统(08)- OpenGL ES - 图片拉伸
  • 基于拼团社交与开源链动 2+1 模式 S2B2C 商城小程序源码的营销创新策略研究
  • TokenFormer: Rethinking Transformer Scaling with Tokenized Model Parameters
  • Vant UI +Golang(gin) 上传文件
  • Connection对象,Statement对象和ResultSet对象的依赖关系 JDBC
  • 设计模式学习思路二
  • linux内核网络层学习