Инструкции по обновлению движка Playwright
Поддержка движка автоматизации Playwright
Новая функция | Крупное обновление | Рекомендуется
📋 Обзор функции
Это обновление добавляет поддержку движка Playwright в функционал скриптов автоматизации MBBrowser. Вместе с существующими движками Puppeteer и Selenium он формирует три основных решения для автоматизации, предоставляя пользователям более мощные и современные возможности управления браузером.
✅ Особенности обновления: Поддержка языков JavaScript, Python и Java, автоматическая конфигурация среды, использование без предварительной настройки!
✨ Основные возможности
1. Комплексная поддержка языков
| Язык | Тип движка | Среда выполнения | Особенности |
|---|---|---|---|
| JavaScript | Playwright | Node.js | Нативная поддержка, оптимальная производительность |
| Python | Playwright | Виртуальная среда | Автоматическая активация venv, изоляция среды |
| 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 non-debug:
Для каждого скрипта создается независимый bat-файл (называется по SESSION_UNIQUE_ID).
✅ Предотвращение конфликтов при параллельном запуске
✅ Механизм автоматической очистки
3. Унифицированный метод подключения CDP
Все языки подключаются к запущенному экземпляру Chrome через протокол Chrome DevTools (CDP):
// 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 | JS/Python/Java | JS/Python/Java |
| Метод подключения | WebSocket | WebDriver | CDP (Быстрее) |
| Современность API | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Кроссбраузерность | Только Chrome | Несколько браузеров | Chrome/Firefox/Safari |
| Автоожидание | Требуется вручную | Ограниченно | Умное автоожидание |
| Перехват сети | Поддерживается | Не поддерживается | Мощная поддержка |
| Мультивкладки | Поддерживается | Поддерживается | Отличная встроенная поддержка |
| Активность сообщества | Высокая | Высокая | Очень высокая (поддержка Microsoft) |
🔧 Технические детали реализации
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 в режиме Non-debug:
- Для каждого скрипта генерируется отдельный 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 playwrightJava
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
Современные веб-приложения
- Автоматическое ожидание в SPA-приложениях.
- Поддержка сложных взаимодействий.
- Улучшенная обработка асинхронности.
Работа с несколькими вкладками
- Нативное управление несколькими вкладками.
- Изоляция контекста.
- Оптимизация параллельных операций.
Управление сетевым слоем
- Перехват и модификация запросов/ответов.
- Тестирование 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│ JS/Py/Java│ JS/Py/Java│
└───────────┴───────────┴────────────┘
↓
Chrome DevTools Protocol (CDP)
↓
Экземпляр Chrome 140🎉 Резюме
✅ Что это обновление дает MBBrowser:
- ✅ Расширенная функциональность: Добавлен третий вариант движка автоматизации.
- ✅ Улучшенный опыт разработки: Более современный API, меньше шаблонного кода.
- ✅ Повышенная стабильность: Официальная поддержка Microsoft, гарантия долгосрочной поддержки.
- ✅ Гибкость: Три языка программирования, удовлетворяющие потребности разных разработчиков.
- ✅ Интеллект: Автоматическая конфигурация среды, использование без настройки.
Добавление Playwright делает MBBrowser более конкурентоспособным в области автоматизации браузеров! 🚀
⚡ Быстрый старт
Шаг 1: Выберите движок
В интерфейсе управления скриптами автоматизации выберите тип движка «Playwright».
Шаг 2: Выберите язык
Выберите в соответствии с потребностями: JavaScript, Python или Java.
Шаг 3: Напишите скрипт
Система автоматически сгенерирует стандартные шаблоны для выбранного языка, включая код подключения к Chrome.
Шаг 4: Запуск одним кликом
Нажмите «Запустить», система автоматически:
- Обнаружит и настроит среду выполнения.
- Заменит эндпоинт подключения и ключ.
- Активирует необходимую виртуальную среду (Python).
- Извлечет драйверы (Java).
- Выполнит скрипт и подключится к экземпляру Chrome.
⚠️ Важные примечания:
- Использование языка Java требует установки соответствующих пакетов языковой среды. Вы можете скачать их, создав новое окно скрипта, выбрав скрипт Playwright и нажав кнопку загрузки языка Java.
- При использовании скриптов Playwright с Python: если вам нужно установить другие компоненты, сначала выполните команду «Playwright\Scripts\activate», а затем вызовите pip для установки.
- При запуске скрипта рекомендуется сначала перевести клиент в автономный режим (standalone).
Дата обновления версии: Декабрь 2025 г.
Техническая поддержка: Playwright 1.48.0 | Selenium 4.25.0 | Puppeteer Latest
