# Playwright自动化引擎升级说明
# Playwright自动化引擎支持
新功能 | 重大更新 | 推荐使用
# 📋 功能概述
本次更新为MBBrowser产品的自动化脚本功能新增了Playwright引擎支持,与现有的Puppeteer和Selenium引擎形成三大自动化解决方案,为用户提供更强大、更现代的浏览器自动化能力。
✅ 更新亮点: 支持JavaScript、Python、Java三种语言,自动环境配置,零配置使用!
# ✨ 核心特性
# 1. 三种语言全面支持
| 语言 | 引擎类型 | 运行环境 | 特点 |
|---|---|---|---|
| JavaScript | Playwright | Node.js | 原生支持,性能最优 |
| Python | Playwright | 虚拟环境 | 自动激活虚拟环境,环境隔离 |
| Java | Playwright | JDK + Node.js | 自动提取驱动,配置自动化 |
# 2. 智能环境管理
# Python虚拟环境
# 自动生成的启动脚本
call Playwright\Scripts\activate
Playwright\Scripts\python.exe "脚本路径"
✅ 自动激活虚拟环境
✅ 环境隔离,避免冲突
# Java驱动自动提取
# 首次运行自动提取
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
const browser = await chromium.connectOverCDP(ws_endpoint);
# Python
browser = p.chromium.connect_over_cdp(ws_endpoint)
// Java
Browser browser = playwright.chromium().connectOverCDP(ws_endpoint);
# 🆚 三大引擎对比
| 特性 | Puppeteer | Selenium | Playwright (新) |
|---|---|---|---|
| 语言支持 | JS only | JS/Python/Java | JS/Python/Java |
| 连接方式 | WebSocket | WebDriver | CDP(更快) |
| API现代化 | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 跨浏览器 | Chrome only | 多浏览器 | Chrome/Firefox/Safari |
| 自动等待 | 需手动 | 有限支持 | 智能自动等待 |
| 网络拦截 | 支持 | 不支持 | 强大支持 |
| 多标签页 | 支持 | 支持 | 原生优秀支持 |
| 社区活跃度 | 高 | 高 | 超高(微软维护) |
# 🔧 技术实现亮点
# 1. 智能脚本标识系统
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 & Python Playwright
size_t posStart = sJs.find("ws://localhost");
sJs.replace(sJs.begin() + posStart, sJs.begin() + posEnd,
pItem->sChromeKey.c_str());
// Java Playwright
size_t posStart = sJs.find("String ws_endpoint = \"");
sJs.replace(sJs.begin() + posStart, sJs.begin() + posEnd,
pItem->sChromeKey.c_str());
# 📝 标准脚本模板
# JavaScript Playwright 模板
const { chromium } = require('playwright');
const ws_endpoint = 'ws://localhost:9223/...'; // 自动替换
const browser = await chromium.connectOverCDP(ws_endpoint);
// 获取现有页面或创建新页面
// 执行自动化操作...
# Python Playwright 模板
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 模板
import com.microsoft.playwright.*;
System.setProperty("playwright.skip.browser.download", "1");
Playwright playwright = Playwright.create(...);
Browser browser = playwright.chromium().connectOverCDP(ws_endpoint);
// 自动化操作...
# 🚀 用户体验提升
# 零配置启动
- 用户只需选择"Playwright"引擎
- 选择语言(JS/Python/Java)
- 编写脚本,一键运行
- 所有环境配置自动完成
# 环境隔离
- ✅ Python使用独立虚拟环境(Playwright目录)
- ✅ Java驱动自动提取,不污染系统
- ✅ JavaScript使用项目级node_modules
# 智能错误处理
- ✅ 缺少驱动?自动提取
- ✅ Node.js找不到?自动配置PATH
- ✅ 详细的错误日志和提示
# 📊 性能对比
| 指标 | Selenium | Puppeteer | Playwright |
|---|---|---|---|
| 启动速度 | 2-3秒 | 1-2秒 | 1-2秒 |
| 操作响应 | 较慢 | 快 | 最快 |
| 稳定性 | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 资源占用 | 中 | 低 | 低 |
# 📦 系统要求
# 基础环境
- Node.js(已有,共用于Puppeteer)
- Python虚拟环境(新增:python\Playwright\)
- JDK(已有,共用于Selenium)
# 新增依赖包
# Python
# 在虚拟环境中
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
npm install playwright
# 🎯 使用场景
# Playwright的优势场景
# 现代Web应用
- SPA应用自动等待
- 复杂交互支持
- 更好的异步处理
# 多标签页操作
- 原生多标签页管理
- Context隔离
- 并发操作优化
# 网络层控制
- 拦截和修改请求/响应
- API测试
- 性能分析
# 跨浏览器测试
- 同一套代码多浏览器
- 保证兼容性
- 统一API
# 🔄 迁移指南
# 从Selenium迁移到Playwright
Selenium Python:
from selenium import webdriver
driver = webdriver.Chrome(...)
driver.get('https://example.com')
Playwright 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:
const puppeteer = require('puppeteer-core');
const browser = await puppeteer.connect({...});
Playwright:
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:一键运行
点击运行,系统自动:
- 检测并配置运行环境
- 替换连接端点和密钥
- 激活必要的虚拟环境(Python)
- 提取驱动程序(Java)
- 执行脚本并连接到Chrome实例
⚠️ 注意事项:
- 使用java语言需要安装对应语言的环境包,可通过新建脚本窗口,选择Playwright脚本,点击java语言下载java环境包
- Python使用playwright脚本时,如需要安装其它组件,请先执行"Playwright\Scripts\activate" 再调用pip进行安装
- 运行脚本时,建议先将客户端设定在单机模式下运行
版本更新日期:2025年12月
技术支持:Playwright 1.48.0 | Selenium 4.25.0 | Puppeteer Latest
← CDP错误提示对照表 套餐购买 →