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

二、Java-封装playwright UI自动化(根据官网执行步骤,首先封装BrowserFactory枚举类及BrowserManager)

前言

查看playwright官网,api文档了解到,playwright的基本步骤:
1、实例化一个playwright
2、启动一个浏览器类型
3、打开一个页面
在这里插入图片描述

所以,在封装时需要有一个浏览器工厂类,定义不同的浏览器类型,在配置文件中指定用例需要使用的浏览器类型,我这里封装的是一个枚举类

1、浏览器工厂枚举类(BrowserFactory)

浏览器工厂枚举,其中定义一个抽象方法
不同的浏览器类型中重写抽象方法传入Playwright对象,用于创建和管理浏览器实例,返回一个浏览器实例。

public enum BrowserFactory {
  /**
   * CHROMIUM枚举类实现浏览器初始化接口
   * 枚举负责使用Chromium浏览器类型创建和配置浏览器实例
   */
  CHROMIUM {
    /**
     * 初始化Chromium浏览器
     * @param playwright Playwright实例,用于创建和管理浏览器
     * @return 返回初始化后的Browser实例
     */
    @Override
    public Browser initialize(final Playwright playwright) {
      // 使用Playwright实例初始化Chromium浏览器
      // 配置浏览器启动选项,包括无头模式和慢动作选项
      return playwright
              .chromium()
              .launch(
                      new BrowserType.LaunchOptions()
                              .setHeadless(configuration().headless()) // 根据配置决定是否以无头模式运行
                              .setSlowMo(configuration().slowMotion()) // 根据配置设置慢动作速度
              );
    }
  },
  FIREFOX {
    /**
     * 重写initialize方法以初始化Firefox浏览器实例
     * 此方法选择Firefox作为浏览器类型,并根据配置选项启动浏览器
     * 主要目的是根据配置文件中定义的参数,如是否无头模式和慢动作设置,来启动浏览器

     * @param playwright Playwright实例,用于创建和管理浏览器实例
     * @return 返回一个初始化后的Browser实例
     */
    @Override
    public Browser initialize(final Playwright playwright) {
      // 使用Playwright实例初始化Firefox浏览器
      // 配置浏览器启动选项,包括是否以无头模式运行和是否启用慢动作模式
      // 无头模式和慢动作设置都是通过configuration方法获取的
      return playwright
              .firefox()
              .launch(
                      new BrowserType.LaunchOptions()
                              .setHeadless(configuration().headless())
                              .setSlowMo(configuration().slowMotion()));
    }
  };

  /**
   * 初始化浏览器实例
   *
   * @param playwright Playwright对象,用于创建和管理浏览器实例
   * @return Browser 返回一个浏览器实例
   */
  public abstract Browser initialize(Playwright playwright);
}

2、封装BrowserManager类

定义一个,后面根据PO模式,封装测试基础类时调用:
在这里插入图片描述

public final class BrowserManager {
  private BrowserManager() {}

  /**
   * 根据配置信息获取并初始化指定的浏览器实例
   * 该方法使用配置文件中指定的浏览器类型,并通过Playwright实例来创建和初始化浏览器
   * 主要用于在测试中创建浏览器实例,以便进行后续的测试操作
   * @param playwright Playwright实例,用于创建和管理浏览器实例
   * @return 返回初始化后的Browser实例
   */
  public static Browser browser(final Playwright playwright) {
    // 根据配置信息获取浏览器类型,并调用相应的初始化方法创建浏览器实例
    return BrowserFactory.valueOf(configuration().browser().toUpperCase()).initialize(playwright);
  }
}

相关文章:

  • 【leetcode hot 100 73】矩阵置零
  • 软件高级架构师 - 软件工程
  • VS2022安装Framework 4.0和.NET Framework 4.5
  • Android车机DIY开发之软件篇(二十)立创泰山派android编译
  • C语言100天练习题【记录本】
  • C++ Boost库中Chrono时间模块的基本使用
  • GB28181开发--ZLMediaKit‌+WVP+Jessibuca‌
  • JAVA入门——反射
  • Sass 模块化革命:深入解析 @use 语法,打造高效 CSS 架构
  • 解锁访问者模式:Java编程的灵活之道
  • 神旗视讯Linux client 3.4版本发布和开源
  • 每日学习Java之一万个为什么?(Maven篇+RPC起步+CICD起步)(待完善)
  • [内网安全] Windows 本地认证 — NTLM 哈希和 LM 哈希
  • 从0到1构建AI深度学习视频分析系统--基于YOLO 目标检测的动作序列检查系统:(1)视频信息的获取与转发
  • AR配置静态IP双链路负载分担示例
  • 说一下SpringBoot3新特新和JDK17新特性
  • 去除HTML有序列表(ol)编号的多种解决方案
  • 分布式存储学习——HBase概述
  • 华为hcie证书有什么作用?
  • 【MYSQL数据库异常处理】执行SQL语句报超时异常
  • 就规范涉企行政执法专项行动有关问题,司法部发布解答
  • 2000多年前的“新衣”长这样!马王堆文物研究新成果上新
  • 云南德宏州盈江县发生4.5级地震,震源深度10千米
  • 山东市监局回应“盒马一批次‘无抗’鸡蛋抽检不合格后复检合格”:系生产商自行送检
  • 《克莱默夫妇》导演罗伯特·本顿去世,终年92岁
  • 中国女足将于5月17日至6月2日赴美国集训并参加邀请赛