这是一个使用Java、Spring Boot和Selenium WebDriver构建的自动化测试项目,旨在对一个博客应用程序进行UI和功能测试。
本项目通过模拟用户在浏览器中的真实操作,自动化地测试博客系统的各项核心功能,包括用户登录、文章列表、文章编辑以及未登录状态下的页面访问限制。
- 核心框架: Spring Boot
- 测试框架: Selenium WebDriver
- 浏览器驱动管理: WebDriverManager
- 构建工具: Maven
- 编程语言: Java 17
- 辅助工具: Lombok, Commons IO
BlogAutoTest
├── src
│ ├── main
│ │ ├── java
│ │ │ └── org/example/blogautotest
│ │ │ └── BlogAutoTestApplication.java // Spring Boot 主应用
│ │ └── resources
│ │ └── application.properties // 配置文件
│ └── test
│ ├── java
│ │ ├── RunTests.java // 测试执行入口
│ │ ├── common
│ │ │ └── Utils.java // WebDriver和工具类封装
│ │ └── tests
│ │ ├── EditPage.java // 编辑页面测试
│ │ ├── ListPage.java // 列表页面测试
│ │ ├── LoginPage.java // 登录页面测试
│ │ └── PageByNoLogin.java // 未登录访问测试
│ └── resources
└── pom.xml // Maven 配置文件
这是项目的工具基类,主要负责:
- WebDriver的初始化与管理: 使用
WebDriverManager
自动配置ChromeDriver,并创建全局唯一的WebDriver实例。 - 隐式等待: 设置了全局的隐式等待时间,以提高测试脚本的稳定性。
- 截图功能: 提供了
getScreenShot
方法,可以在测试失败或关键步骤时进行截图,并按日期和时间保存,便于问题排查。 - 构造函数: 提供了两个构造函数,一个用于直接初始化浏览器,另一个在初始化的同时打开指定的URL。
封装了所有与用户登录相关的测试用例。
loginPageRight()
: 验证登录页面的基本元素是否存在。loginSuc()
: 测试使用正确的用户名和密码(zhangsan/123456)成功登录,并断言页面跳转是否正确。LoginFail()
: 测试使用错误的密码登录失败的场景,并处理登录失败后弹出的Alert对话框。
封装了登录后访问文章列表页的测试。
ListByLogin()
: 模拟用户在登录状态下,点击并访问文章列表页的操作。
封装了编辑博客文章的测试。
EdiTSuc()
: 自动在标题栏输入文本"肥波是我儿",并点击提交按钮来测试文章发布功能。
该类专门用于测试在未登录状态下,用户访问需要登录权限的页面是否会被正确地重定向到登录页。
ListPageByNoLogin()
: 测试访问文章列表页。DetailPageByNoLogin()
: 测试访问文章详情页。EditPageByNoLogin()
: 测试访问文章编辑页。- 所有方法都使用了
WebDriverWait
(显式等待)来等待页面标题变为“博客登陆页”,并使用断言确保重定向成功。
这是整个测试流程的主执行入口。它通过main
方法,按顺序实例化各个测试页面类,并调用其中的测试方法,串联起一个完整的业务测试流程。
- 测试流程:
- 初始化并测试登录页面。
- 执行成功的登录操作。
- 执行失败的登录操作。
- 测试未登录状态下对各个页面的访问。
- 再次执行成功的登录。
- 测试文章列表页和编辑页的功能。
- 确保本地已安装Java 17和Maven环境。
- 打开项目。
- 直接运行
src/test/java/RunTests.java
文件中的main
方法即可启动所有自动化测试。