Selenium自动化测试框架

MCP Selenium自动化测试框架是一个基于Page Object Model、Cucumber BDD和TestNG的综合性Web应用测试解决方案,支持跨浏览器测试和并行执行。

  • by Vladimir-Topozly
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 Vladimir-Topozly/mcp-selenium-automation

使用说明

MCP硒自动化框架

一个用于web应用程序测试的全面的Selenium测试自动化框架,使用页面对象模型、Cucumber BDD、TestNG和Google Guice进行依赖注入。

目录

项目结构

mcp-selenium-automation/
├── pom.xml
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── mcp/
│   │   │           ├── config/
│   │   │           │   ├── ConfigurationManager.java
│   │   │           │   ├── DriverManager.java
│   │   │           │   └── GuiceModule.java
│   │   │           ├── constants/
│   │   │           │   ├── BrowserType.java
│   │   │           │   └── TimeoutConstants.java
│   │   │           ├── pages/
│   │   │           │   ├── BasePage.java
│   │   │           │   ├── GoogleHomePage.java
│   │   │           │   ├── GoogleSearchResultsPage.java
│   │   │           │   └── SearchResultPage.java
│   │   │           └── utils/
│   │   │               ├── PropertyReader.java
│   │   │               └── WaitUtils.java
│   │   └── resources/
│   │       ├── config.properties
│   │       └── log4j2.xml
│   └── test/
│       ├── java/
│       │   └── com/
│       │       └── mcp/
│       │           ├── hooks/
│       │           │   └── TestHooks.java
│       │           ├── runner/
│       │           │   └── TestRunner.java
│       │           └── steps/
│       │               ├── SearchResultsSteps.java
│       │               ├── GoogleHomePageSteps.java
│       │               └── GoogleSearchResultsSteps.java
│       └── resources/
│           ├── features/
│           │   └── googel_search.feature
│           └── testng.xml

详细结构说明

根系结构

  • mcp硒自动化/:项目的根目录。
  • pom.xml文件:定义项目依赖关系、构建配置和插件的Maven项目对象模型文件。这对于管理项目的库和构建生命周期至关重要。

源代码结构

该项目遵循Maven的标准目录布局,分为 main (应用程序代码)和 test (测试代码)。

主要源代码
src/main/java/com/mcp/automation/config/

此包包含与配置相关的类:

  • 配置管理器.java:

    • 实现Singleton模式以确保单个配置实例
    • 从加载属性 config.properties 文件
    • 为所有配置值提供getter
    • 存储浏览器设置、URL、搜索词和超时值
  • 驱动程序管理器.java:

    • 管理WebDriver实例(ChromeDriver、FirefoxDriver、EdgeDriver)
    • 配置浏览器选项(无头模式,最大化窗口)
    • 设置超时配置
    • 提供获取和退出WebDriver的方法
  • GuiceModule.java:

    • 用于依赖注入的Google Guice配置
    • 将接口绑定到实现
    • 为重要类设置单例作用域
    • 为需要的组件提供WebDriver实例
src/main/java/com/mcp/automation/constants/

包含常数值和枚举:

  • 基于浏览器。:

    • 支持的浏览器(CHROME、FIREFOX、EDGE)的枚举
    • 提供将字符串浏览器名称转换为枚举的实用方法
  • 超时Constants.java:

    • 定义各种操作的默认超时值
    • 提供将秒转换为Duration对象的方法
    • 包含用于短、中、长等待的常量
src/main/java/com/mcp/automation/pages/

实现页面对象模型模式:

  • BasePage.java:

    • 所有页面对象扩展的抽象类
    • 初始化WebElement注释的页面工厂
    • 提供常用方法,如click、sendKeys、isElementDisplayed
    • 处理JavaScript执行和导航
  • 谷歌主页.java:

    • 代表谷歌的主页
    • 包含搜索输入和搜索按钮等元素
    • 提供导航到谷歌和执行搜索的方法
  • 谷歌搜索结果Page.java:

    • 代表谷歌的搜索结果页面
    • 查找搜索结果链接并与之交互
    • 提供点击搜索结果的方法
  • 搜索结果:

    • 代表法拉利SF90官方页面
    • 包含URL和页面内容的验证方法
    • 提供对法拉利特定页面元素的访问
src/main/java/com/mcp/automation/utils/

常见操作的实用程序类别:

  • PropertyReader.java:

    • 从配置文件加载和读取属性
    • 提供类型安全的方法来获取字符串、整数和布尔属性
    • 处理默认值和错误情况
  • WaitUtils.java:

    • 为各种情况提供显式等待实用程序
    • 包括等待元素、页面加载和URL更改的方法
    • 实施Selenium等待的最佳实践
src/main/resources/

配置文件:

  • config.properties:

    • 包含可配置选项的键值对
    • 包括浏览器设置、URL、搜索词和超时
    • 无需更改代码即可轻松修改
  • log4j2.xml:

    • 用于日志记录的Log4j2配置
    • 定义控制台和文件附加器
    • 设置日志记录级别和模式
测试源代码
src/test/java/com/mcp/automation/hooks/

黄瓜挂钩用于安装和拆卸:

  • TestHooks.java:
    • 包含 @Before 和 @After 围绕场景执行的方法
    • 处理WebDriver设置和清理
    • 对测试失败进行截图
src/test/java/com/mcp/automation/runner/

测试执行配置:

  • TestRunner.java:
    • TestNG和Cucumber集成
    • 定义功能文件位置、粘合代码和插件
    • 配置报告生成和并行执行选项
src/test/java/com/mcp/automation/steps/

黄瓜步骤定义类:

  • 搜索结果Steps.java:

    • 实施与Ferrari SF90页面验证相关的步骤
    • 验证URL和页面内容
    • 使用AssertJ进行流畅的断言
  • 谷歌主页Steps.java:

    • 实施Google主页交互的步骤
    • 处理谷歌导航
    • 执行搜索操作
  • GoogleSearchResults Steps.java:

    • 实施搜索结果交互的步骤
    • 搜索结果点击次数
    • 验证搜索结果是否存在
src/test/resources/features/

黄瓜特征文件:

  • ferrari_sf90_search.feature:
    • 用Gherkin语法定义测试场景
    • 包含端到端测试的Given When Then步骤
    • 用商业可读语言编写
src/test/resources/

测试配置:

  • testng.xml:
    • TestNG配置文件
    • 定义要执行的测试套件和类
    • 配置侦听器和执行选项

框架架构

该框架基于以下架构原则构建:

  1. 关注点分离:

    • 页面处理UI交互
    • 步骤定义将Gherkin与代码连接起来
    • 配置管理环境设置
    • 实用程序提供可重用的辅助方法
  2. Guice的依赖注入:

    • 减少组件之间的紧密耦合
    • 通过模拟注入使测试更容易
    • 集中对象创建和生命周期管理
  3. 页面对象模型:

    • 每个网页都有一个相应的类
    • 封装页面结构和行为
    • 使测试在UI更改时更易于维护
  4. Cucumber的行为驱动开发:

    • 用通俗易懂的语言编写的场景
    • 通过注释映射到代码的步骤
    • 促进技术和非技术利益相关者之间的合作
  5. 使用TestNG执行测试:

    • 强大的测试运行器,支持并行执行
    • 测试配置注释
    • 与Cucumber集成用于BDD

安装说明

先决条件

  • Java JDK 11或更高版本
  • Maven 3.6.3或更高版本
  • IntelliJ IDEA(推荐)
  • 网络浏览器:Chrome、Firefox和/或Edge

安装

  1. 使用提供的脚本克隆存储库或生成项目:

    对于Linux/macOS:

    ./generate-project.sh
    

    对于Windows:

    generate-project.bat
    
  2. 将项目导入IntelliJ IDEA:

    • 打开IntelliJ IDEA
    • 选择“导入项目”或“打开”
    • 导航至 mcp-selenium-automation 目录
    • 选择 pom.xml 文件
    • 勾选“自动导入Maven项目”
    • 按照提示完成导入
  3. 安装浏览器驱动程序:

    • 该框架配置为使用WebDriver Manager,它将自动下载正确的驱动程序

运行测试

使用Maven

使用Maven运行所有测试:

mvn clean test

使用特定浏览器运行:

mvn clean test -Dbrowser=chrome

使用IntelliJ IDEA

  1. 导航至 src/test/java/com/mcp/automation/runner/TestRunner.java
  2. 右键单击并选择“运行TestRunner”

使用标签

要运行带有标签的特定测试,请执行以下操作:

mvn clean test -Dcucumber.filter.tags="@search"

特性

  • 跨浏览器测试:支持Chrome、Firefox和Edge浏览器
  • 可配置执行:易于通过属性文件更改设置
  • 详细日志记录:使用Log4j2进行全面日志记录
  • 故障截图:自动捕获失败测试的屏幕截图
  • HTML报告:Cucumber HTML报告,用于更好的测试分析
  • 并行执行:支持并行运行测试(可以在TestNG中启用)
  • 清晰的关注点分离:遵循测试架构的最佳实践

示例场景

功能:谷歌搜索验证

@搜索@烟雾 场景概述:搜索并验证第一个结果 鉴于我在谷歌主页上 当我搜索““在谷歌上 然后我点击了第一个搜索结果 然后,我应该被重定向到预期结果页面

Examples:
  | query                      |
  | test automation framework |
  | selenium webdriver        |
  | Ferrari SF90              |

技术

  • Selenium WebDriver 4.x
  • 黄瓜7.x
  • TestNG 7.x
  • 谷歌Guice 7.x
  • 断言J 3.x
  • 龙目
  • Log4j2
  • 梅文