1、browser(浏览器)
- Browser对应一个浏览器实例,例如chromium、Firefox、WebKit等
- Playwright脚本通常以启动浏览器实例开始,已关闭浏览器结束
- 浏览器实例可以在headless(无头)或headful(有头)模式下启动。Headless模式允许脚本在内存中运行浏览器,不展示实际窗口,通常用于服务器或CI/CD环境中的自动化测试
- 一个Browser可以包含多个BrowserContext
2、BrowserContext(浏览器上下文)
- BrowserContext代表浏览器的上下文回话,相当于一个全新的浏览器配置文件
- Playwright为每个测试创建一个BrowserContext,提供了完全隔离的测试环境,并且零开销
- 每个BrowserContext都有自己的Session、Cookie、浏览器存储和浏览器历史记录,与其他BrowserContext完全隔离
- 创建一个新的BrowserContext非常快速,只需要几毫秒
- 一个BrowserContext可以包含多个Page
3、Page(页面)
- Page代表浏览器中的一个选项卡或页面
- Page是真正与网页进行交互的层面,包括页面跳转、元素定位、事件触发等
- 通过Page可以访问和操作网页中的所有元素和事件
- 一个BrowserContext可以打开多个Page,并且每个Page都有自己单独的状态
总结
- Playwright通过Browser、BrowserContext和Page三层结构,实现了对浏览器的全面控制盒测试
- Browser是浏览器实例的抽象,可以包含多个BrowserContext
- BrowserContext是浏览器上下文的抽象,提供了测试隔离和快速创建能力,可以包含多个Page
- Page是页面层的抽象,用于与网页进行交互