Skip to content

Инструкции по обновлению движка Playwright

Поддержка движка автоматизации Playwright

Новая функция | Крупное обновление | Рекомендуется


📋 Обзор функции

Это обновление добавляет поддержку движка Playwright в функционал скриптов автоматизации MBBrowser. Вместе с существующими движками Puppeteer и Selenium он формирует три основных решения для автоматизации, предоставляя пользователям более мощные и современные возможности управления браузером.

Особенности обновления: Поддержка языков JavaScript, Python и Java, автоматическая конфигурация среды, использование без предварительной настройки!


✨ Основные возможности

1. Комплексная поддержка языков

ЯзыкТип движкаСреда выполненияОсобенности
JavaScriptPlaywrightNode.jsНативная поддержка, оптимальная производительность
PythonPlaywrightВиртуальная средаАвтоматическая активация venv, изоляция среды
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 non-debug:
Для каждого скрипта создается независимый bat-файл (называется по SESSION_UNIQUE_ID).

✅ Предотвращение конфликтов при параллельном запуске
✅ Механизм автоматической очистки

3. Унифицированный метод подключения CDP

Все языки подключаются к запущенному экземпляру Chrome через протокол Chrome DevTools (CDP):

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 (Новый)
Поддержка языковТолько JSJS/Python/JavaJS/Python/Java
Метод подключенияWebSocketWebDriverCDP (Быстрее)
Современность API⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
КроссбраузерностьТолько ChromeНесколько браузеровChrome/Firefox/Safari
АвтоожиданиеТребуется вручнуюОграниченноУмное автоожидание
Перехват сетиПоддерживаетсяНе поддерживаетсяМощная поддержка
МультивкладкиПоддерживаетсяПоддерживаетсяОтличная встроенная поддержка
Активность сообществаВысокаяВысокаяОчень высокая (поддержка Microsoft)

🔧 Технические детали реализации

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 в режиме Non-debug:

  • Для каждого скрипта генерируется отдельный 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

Современные веб-приложения

  • Автоматическое ожидание в SPA-приложениях.
  • Поддержка сложных взаимодействий.
  • Улучшенная обработка асинхронности.

Работа с несколькими вкладками

  • Нативное управление несколькими вкладками.
  • Изоляция контекста.
  • Оптимизация параллельных операций.

Управление сетевым слоем

  • Перехват и модификация запросов/ответов.
  • Тестирование 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│ 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: Запуск одним кликом

Нажмите «Запустить», система автоматически:

  1. Обнаружит и настроит среду выполнения.
  2. Заменит эндпоинт подключения и ключ.
  3. Активирует необходимую виртуальную среду (Python).
  4. Извлечет драйверы (Java).
  5. Выполнит скрипт и подключится к экземпляру Chrome.

⚠️ Важные примечания:

  • Использование языка Java требует установки соответствующих пакетов языковой среды. Вы можете скачать их, создав новое окно скрипта, выбрав скрипт Playwright и нажав кнопку загрузки языка Java.
  • При использовании скриптов Playwright с Python: если вам нужно установить другие компоненты, сначала выполните команду «Playwright\Scripts\activate», а затем вызовите pip для установки.
  • При запуске скрипта рекомендуется сначала перевести клиент в автономный режим (standalone).

Дата обновления версии: Декабрь 2025 г.
Техническая поддержка: Playwright 1.48.0 | Selenium 4.25.0 | Puppeteer Latest