Skip to content

Playwright自动化引擎升级说明

Playwright自动化引擎支持

新功能 | 重大更新 | 推荐使用


📋 功能概述

本次更新为MBBrowser产品的自动化脚本功能新增了Playwright引擎支持,与现有的Puppeteer和Selenium引擎形成三大自动化解决方案,为用户提供更强大、更现代的浏览器自动化能力。

更新亮点: 支持JavaScript、Python、Java三种语言,自动环境配置,零配置使用!


✨ 核心特性

1. 三种语言全面支持

语言引擎类型运行环境特点
JavaScriptPlaywrightNode.js原生支持,性能最优
PythonPlaywright虚拟环境自动激活虚拟环境,环境隔离
JavaPlaywrightJDK + Node.js自动提取驱动,配置自动化

2. 智能环境管理

Python虚拟环境

bash
# 自动生成的启动脚本
call Playwright\Scripts\activate
Playwright\Scripts\python.exe "脚本路径"

✅ 自动激活虚拟环境
✅ 环境隔离,避免冲突

Java驱动自动提取

bash
# 首次运行自动提取
if not exist package\cli.js (
  jar xf lib\driver-bundle.jar
  move driver\win32_x64\package package
)

✅ 智能检测
✅ 自动提取和配置

独立bat文件管理

Python非调试模式:
每个脚本生成独立的bat文件(以SESSION_UNIQUE_ID命名)

✅ 避免并发冲突
✅ 自动清理机制

3. 统一的CDP连接方式

所有语言都通过Chrome DevTools Protocol (CDP)连接到已启动的Chrome实例:

javascript
// JavaScript
const browser = await chromium.connectOverCDP(ws_endpoint);
python
# Python
browser = p.chromium.connect_over_cdp(ws_endpoint)
java
// Java
Browser browser = playwright.chromium().connectOverCDP(ws_endpoint);

🆚 三大引擎对比

特性PuppeteerSeleniumPlaywright (新)
语言支持JS onlyJS/Python/JavaJS/Python/Java
连接方式WebSocketWebDriverCDP(更快)
API现代化⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
跨浏览器Chrome only多浏览器Chrome/Firefox/Safari
自动等待需手动有限支持智能自动等待
网络拦截支持不支持强大支持
多标签页支持支持原生优秀支持
社区活跃度超高(微软维护)

🔧 技术实现亮点

1. 智能脚本标识系统

cpp
std::string g_sScriptFlag[3][3] = {
    {"std_mbscript_pup_js", "", ""},              // Puppeteer
    {"", "std_mbscript_sele_py", "std_mbscript_sele_jv"},  // Selenium
    {"std_mbscript_play_js", "std_mbscript_play_py", "std_mbscript_play_jv"}  // Playwright
};

✅ 通过标识符自动识别脚本类型,确保使用正确的运行环境

2. 独立的bat文件管理

Python脚本非调试模式:

  • 每个脚本生成独立的bat文件(以SESSION_UNIQUE_ID命名)
  • 避免多脚本并发冲突
  • 自动清理机制

Java脚本Playwright类型:

  • 自动检测并提取驱动程序
  • 设置Node.js路径
  • 智能错误处理和提示

3. 自动端口和密钥替换

运行时自动替换脚本中的连接信息:

javascript
// JavaScript & Python Playwright
size_t posStart = sJs.find("ws://localhost");
sJs.replace(sJs.begin() + posStart, sJs.begin() + posEnd, 
           pItem->sChromeKey.c_str());
java
// Java Playwright
size_t posStart = sJs.find("String ws_endpoint = \"");
sJs.replace(sJs.begin() + posStart, sJs.begin() + posEnd, 
           pItem->sChromeKey.c_str());

📝 标准脚本模板

JavaScript Playwright 模板

javascript
const { chromium } = require('playwright');
const ws_endpoint = 'ws://localhost:9223/...';  // 自动替换

const browser = await chromium.connectOverCDP(ws_endpoint);
// 获取现有页面或创建新页面
// 执行自动化操作...

Python Playwright 模板

python
from playwright.sync_api import sync_playwright
ws_endpoint = "ws://localhost:9234/..."  # 自动替换

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(ws_endpoint)
    # 自动化操作...

Java Playwright 模板

java
import com.microsoft.playwright.*;

System.setProperty("playwright.skip.browser.download", "1");
Playwright playwright = Playwright.create(...);
Browser browser = playwright.chromium().connectOverCDP(ws_endpoint);
// 自动化操作...

🚀 用户体验提升

零配置启动

  1. 用户只需选择"Playwright"引擎
  2. 选择语言(JS/Python/Java)
  3. 编写脚本,一键运行
  4. 所有环境配置自动完成

环境隔离

  • ✅ Python使用独立虚拟环境(Playwright目录)
  • ✅ Java驱动自动提取,不污染系统
  • ✅ JavaScript使用项目级node_modules

智能错误处理

  • ✅ 缺少驱动?自动提取
  • ✅ Node.js找不到?自动配置PATH
  • ✅ 详细的错误日志和提示

📊 性能对比

指标SeleniumPuppeteerPlaywright
启动速度2-3秒1-2秒1-2秒
操作响应较慢最快
稳定性⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
资源占用

📦 系统要求

基础环境

  • Node.js(已有,共用于Puppeteer)
  • Python虚拟环境(新增:python\Playwright\)
  • JDK(已有,共用于Selenium)

新增依赖包

Python

bash
# 在虚拟环境中
pip install playwright

Java

lib/
  ├── playwright-1.48.0.jar
  ├── driver-bundle-1.48.0.jar
  ├── driver-1.48.0.jar
  └── gson-2.x.jar(及其他依赖)

JavaScript

bash
npm install playwright

🎯 使用场景

Playwright的优势场景

现代Web应用

  • SPA应用自动等待
  • 复杂交互支持
  • 更好的异步处理

多标签页操作

  • 原生多标签页管理
  • Context隔离
  • 并发操作优化

网络层控制

  • 拦截和修改请求/响应
  • API测试
  • 性能分析

跨浏览器测试

  • 同一套代码多浏览器
  • 保证兼容性
  • 统一API

🔄 迁移指南

从Selenium迁移到Playwright

Selenium Python:

python
from selenium import webdriver
driver = webdriver.Chrome(...)
driver.get('https://example.com')

Playwright Python:

python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(ws_endpoint)
    page = browser.contexts[0].pages[0]
    page.goto('https://example.com')

从Puppeteer迁移到Playwright

Puppeteer:

javascript
const puppeteer = require('puppeteer-core');
const browser = await puppeteer.connect({...});

Playwright:

javascript
const { chromium } = require('playwright');
const browser = await chromium.connectOverCDP(ws_endpoint);

💡 升级建议

✅ 适合使用Playwright的场景

  • 需要现代API和更好的异步支持
  • 需要网络层控制(拦截/修改请求)
  • 需要多标签页/多上下文管理
  • 需要跨浏览器测试
  • 需要更稳定的自动化脚本

⚡ 继续使用Selenium的场景

  • 已有大量Selenium脚本,迁移成本高
  • 需要移动端浏览器支持(Appium)
  • 团队更熟悉Selenium生态

⚡ 继续使用Puppeteer的场景

  • 只需要Chrome/Chromium支持
  • 脚本简单,不需要复杂功能
  • 追求最小依赖

🏗️ 技术架构

MBBrowser

CScriptManager

┌───────────┬───────────┬────────────┐
│ Puppeteer │ Selenium  │ Playwright │
│  JS only  │ JS/Py/Java│ JS/Py/Java│
└───────────┴───────────┴────────────┘

Chrome DevTools Protocol (CDP)

Chrome 140 实例

🎉 总结

此次更新为MBBrowser产品带来了:

  • 功能增强:新增第三种自动化引擎选择
  • 开发体验:更现代的API,更少的样板代码
  • 稳定性提升:微软官方维护,长期支持保证
  • 灵活性:三种语言,满足不同开发者需求
  • 智能化:自动环境配置,零配置使用

Playwright的加入让MBBrowser在浏览器自动化领域更具竞争力!🚀


⚡ 快速开始

步骤1:选择引擎

在自动化脚本管理界面,选择 "Playwright" 引擎类型

步骤2:选择语言

根据需求选择:JavaScript、Python 或 Java

步骤3:编写脚本

系统会自动生成对应语言的标准模板,包含连接Chrome的代码

步骤4:一键运行

点击运行,系统自动:

  1. 检测并配置运行环境
  2. 替换连接端点和密钥
  3. 激活必要的虚拟环境(Python)
  4. 提取驱动程序(Java)
  5. 执行脚本并连接到Chrome实例

⚠️ 注意事项:

  • 使用java语言需要安装对应语言的环境包,可通过新建脚本窗口,选择Playwright脚本,点击java语言下载java环境包
  • Python使用playwright脚本时,如需要安装其它组件,请先执行"Playwright\Scripts\activate" 再调用pip进行安装
  • 运行脚本时,建议先将客户端设定在单机模式下运行

版本更新日期:2025年12月
技术支持:Playwright 1.48.0 | Selenium 4.25.0 | Puppeteer Latest