# 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);
// 自动化操作...

# 🚀 用户体验提升

# 零配置启动

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

# 环境隔离

  • ✅ 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:一键运行

点击运行,系统自动:

  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