前言
查看playwright官网,api文档了解到,playwright的基本步骤:
1、实例化一个playwright
2、启动一个浏览器类型
3、打开一个页面
所以,在封装时需要有一个浏览器工厂类,定义不同的浏览器类型,在配置文件中指定用例需要使用的浏览器类型,我这里封装的是一个枚举类
1、浏览器工厂枚举类(BrowserFactory)
浏览器工厂枚举,其中定义一个抽象方法
不同的浏览器类型中重写抽象方法传入Playwright对象,用于创建和管理浏览器实例,返回一个浏览器实例。
public enum BrowserFactory {/*** CHROMIUM枚举类实现浏览器初始化接口* 枚举负责使用Chromium浏览器类型创建和配置浏览器实例*/CHROMIUM {/*** 初始化Chromium浏览器* @param playwright Playwright实例,用于创建和管理浏览器* @return 返回初始化后的Browser实例*/@Overridepublic 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实例*/@Overridepublic 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);}
}