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

二、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);
  }
}

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

相关文章:

  • Python开发高效PDF批量转Word
  • 前端基础之内置指令与自定义指令
  • VsCode 快捷键备忘
  • CentOS 7 安装Nginx-1.26.3
  • 【3】VS Code 新建上位机项目---C#窗体与控件开发
  • 海康机器人搞工业机器人,我以为它忘记自己名字,作为技术,作为业务你跟不跟,机器视觉工程师搞视觉引导必须知道工业机器人四大坐标系
  • 前端开发10大框架深度解析
  • 【单片机】嵌入式系统设计流程
  • JavaWeb-HttpServletRequest请求域接口
  • 北京大学第四弹:《DeepSeek原理和落地应用》
  • 计算机视觉|Swin Transformer:视觉 Transformer 的新方向
  • C++课程设计【宿舍管理查询软件】
  • spring-ioc-bean
  • 【二.提示词工程与实战应用篇】【3.Prompt调优:让AI更懂你的需求】
  • Finebi_求组内占比和组内累计占比
  • Cursor+Claude3.7实现从原型到app开发
  • Docker卷挂载:为何不同路径指向同一份文件
  • 了解JVM
  • [machine learning] MACS、MACs、FLOPS、FLOPs
  • AI智能化办公与AI绘画商业应用