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