Головна / Статті

Playwright чи браузерні агенти? Де скриптована автоматизація все ще має перевагу.

Скрипти Playwright проти браузерних агентів на основі MCP: крихкість, детермінізм та витрати, виконання однієї завдання з рахункування обома способами, ризики для безпеки та ситуації, коли кожен з них має перевагу.

Видавець: REACTAPP.TOP8 хв читання1835 слів

Джерела: Playwright vs WebMCP: Will Browser Automation Survive the Agent Era?

Веб був створений для людей, які клікають по посиланнях та читають сторінки. Selenium, Puppeteer та Playwright дозволяють коду виконувати ці дії замість людини. Протягом понад десяти років автоматизація браузерів означала написання скриптів, детальне описування кожного кроку та їхнє багаторазове виконання. Тепер штучні інтелектуальні агенти змінюють ситуацію. Вони можуть міркувати, планувати та діяти, а також переглядати сторінки так само, як людина: спостерігати за ними, розуміти їх зміст та вирішувати, що робити далі. Це піднімає важливе питання: чи робить Model Context Protocol (MCP) скриптовану автоматизацію застарілою, чи Playwright все ще займає своє місце?

Чому розробники люблять Playwright

Playwright від Microsoft — це сучасна платформа для автоматизації браузерів. Код, написаний з її використанням, змушує Chromium, Firefox чи WebKit клікати по кнопках, заповнювати форми, збирати дані та виконувати тестування від початку до кінця. Ось невеликий приклад:

const { chromium } = require('playwright');
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('https://example.com/login');
await page.fill('#email', 'user@example.com');
await page.fill('#password', 'secret');
await page.click('button[type="submit"]');
await page.waitForURL('**/dashboard');
console.log('Logged in!');
await browser.close();

Результат є чистим, детермінованим та прогнозованим. Звичайні причини його популярності:

  • Підтримка різних браузерів є вбудованою.
  • Ізоляція тестів та їх паралельний запуск є дуже надійними.
  • Функція автоматичного очікування усуває старі хаки з використанням sleep(2000).
  • Є можливість відстеження, зйомки екрана та запису відео.
  • Він ідеально вписується в пайплайни CI/CD.

Для автоматизації тестування якості, тестування на регресію та скриптованих веб-процесів він є стандартом.

Де скрипти створюють проблеми

Слабкістю є крихкість. Якщо змінити назву CSS-класу кнопки, скрипт перестає працювати. Якщо перемістити поле форми, він також перестає функціонувати. Якщо впровадити варіант A/B із новим макетом, проблеми знову виникають. Кожен скрипт — це жорстко закодована карта припущень щодо вигляду сторінки в певний момент часу, а інтерфейси постійно змінюються. У компанії з швидкими змінами підтримка великої кількості інструментів Playwright може перетворитися на другу повноцінну роботу.

Аналогія допоможе зрозуміти. Скрипт — це ламінована картка з інструкціями для пересування по місту. Він працює доти, доки дорога не закриється, будівля не переміститься або не з’явиться односпрямована вулиця. Кращий навігатор озирнеться навколо, прочитає вуличні знаки та буде приймати рішення на льоту.

Що додає MCP

MCP, представлений компанією Anthropic наприкінці 2024 року, — це відкритий стандарт для структурованого підключення моделей ШІ, таких як Claude, до зовнішніх інструментів, джерел даних та середовищ. Він функціонує як універсальна система плагінів для агентів. Замість того, щоб працювати всередині вікна чату, модель може отримувати доступ до баз даних, API, файлових систем та веб-браузерів.

Вже існує сервер Playwright MCP, який надає доступ до дій браузера у вигляді функцій, які можуть викликатися агентом. Там, де розробник би написав щось на кшталт цього:

await page.click('#submit-button');

Натомість агент отримує мету:

"Submit the contact form on acme.com with the user's name and email"

Звідти він навігує, знаходить елементи та взаємодіє з сторінкою за допомогою зору, парсингу HTML та міркувань, без жодних жорстко закодованих селекторів.

Порівняння

Playwright – традиційний підхід

  • Контроль: розробник пише кожен крок.
  • Селектори: CSS, XPath або текст.
  • Стійкість до змін інтерфейсу: припиняє працювати при змінах інтерфейсу.
  • Налаштування: середнє, оскільки потрібен код.
  • Детермінізм: повністю детермінований.
  • Відлагоджування: просте, завдяки журналам слідування та скріншотам.
  • Швидкість: швидкий.
  • Витрати: лише обчислювальні.
  • Найкраще підходить для: тестів на регресію та пайплайнів CI/CD.
  • Надійність: висока при належному обслуговуванні.

WebMCP або Playwright MCP – підхід з агентом

  • Контроль: ШІ-агент міркує та приймає рішення.
  • Селектори: природна мова разом із візуальним розумінням.
  • Стійкість до змін інтерфейсу: адаптується шляхом повторного аналізу поточного DOM.
  • Налаштування: низькі, оскільки достатньо описати мету.
  • Детермінізм: недетерміністичний, оскільки використовується міркування LLM.
  • Виправлення помилок: складніше, оскільки питання полягає у тому, чому агент обрав саме цю дію.
  • Швидкість: повільніше через додаткові витрати на обробку даних LLM.
  • Витрати: обчислювальні ресурси плюс токени API LLM.
  • Найкраще підходить для: динамічних завдань, складних робочих процесів та агентів.
  • Надійність: покращується, але ще не досягає рівня продакшн-систем.

Одне завдання, два методи

Завдання: увійти у панель керування SaaS, знайти останню рахунку-фактуру та завантажити її у форматі PDF.

За допомогою Playwright скрипт переходить на сторінку входу, заповнює електронну пошту та пароль за допомогою селекторів data-testid, натискає кнопку входу та продовжує крок за кроком.

await page.goto('https://app.saas.com/login');
await page.fill('[data-testid="email"]', credentials.email);
await page.fill('[data-testid="password"]', credentials.password);
await page.click('[data-testid="login-btn"]');
await page.waitForSelector('.dashboard');
await page.click('nav >> text=Billing');
await page.click('.invoice-list tr:first-child .download-btn');
await page.waitForEvent('download');

Розгляньте, що станеться, якщо під час рефакторингу буде змінено назву атрибута data-testid, якщо навігація за рахунками переміститься у бічну панель, або якщо таблиця рахунків буде форматуватися з іншою структурою сторінок.

З агентом інструкція формулюється простою мовою як конкретна мета:

Goal: "Go to app.saas.com, log in with my credentials,
navigate to billing, find the most recent invoice,
and download it as a PDF."

Агент завантажує сторінку, читає DOM та візуальну структуру, визначає форму входу за змістом, вводить облікові дані та надсилає заявку, шукає елементи навігації з позначками «Білінг», «Рахунки-фактури» чи подібними, знаходить найновіший рахунок-фактуру за датою та натискає «Завантажити». Якщо інтерфейс змінюється, він знову читає сторінку та пристосовується. Жодних скриптів не потрібно оновлювати.

Традиційна автоматизація запитує, які саме кроки має виконати комп’ютер. Автоматизація ери агентів запитує, якого результату потрібно досягти, та чи може ШІ знайти відповідні кроки. Іншими словами: скрипти програмують шлях, тоді як інструкції програмують пункт призначення.

Для простих, стабільних завдань великого обсягу, таких як 10 000 тестів на регресію в системі CI, детермінізм Playwright завжди має перевагу. Для складних, змінюваних, одноразових робочих процесів, які б виконав людський асистент, браузерні агенти, керовані через MCP, випереджають інші рішення.

Інструменти, які з’являються в цьому просторі

Екосистема швидко розвивається:

  • Playwright MCP — офіційний сервер MCP, який надає доступ до дій браузера Playwright для AI-агентів.
  • Stagehand від Browserbase — автоматизація, створена спеціально для AI, яка поєднує Playwright із технологіями розуміння зображень LLM.
  • Browser Use — фреймворк відкритого коду для агентів веб-браузингу.
  • Claude Computer Use — система від Anthropic, яка може бачити та керувати повним робочим столом чи браузером.
  • OpenAI Operator — агент GPT-4o, який виконує завдання шляхом браузингу.
  • Skyvern — автоматизація, заснована на розумінні зображень та технологіях LLM, яка не потребує використання селекторів.

Це не іграшки. Компанії використовують їх у процесах закупівель, вилученні даних, надсиланні форм та моніторингу конкурентів — завданнях, які інакше могли б зайняти місяці на написання скриптів.

Чи зникне Playwright?

Ні, хоча його роль змінюється. Він залишається важливим, але більше не є єдиним інструментом у наборі. Він схожий на SQL: фундаментальний, точний та незамінний для структурованої роботи, проте більше не є єдиним шляхом до рішень. У майбутньому обидва підходи використовуватимуться для завдань, які кожен з них підходить виконувати.

Вибір між ними

Рішення приймається за допомогою діаграми потоків. Спочатку потрібно з’ясувати, чи є завдання чітко визначеним зі стабільним інтерфейсом користувача. Якщо так, і воно виконується багаторазово у великих масштабах, наприклад у процесах CI чи тестування регресії, тоді відповіддю є скрипти. Якщо інтерфейс змінюється або завдання є одноразовим, тоді краще підійде агент.

Is the task well-defined with a stable UI?
        │
        ├── YES → Does it run repeatedly at scale (CI/CD, regression)?
        │              │
        │              ├── YES → Use Playwright
        │              └── NO  → Either works; Playwright is cheaper
        │
        └── NO → Is the UI dynamic, unknown, or frequently changing?
                       │
                       ├── YES → Use MCP Agent / AI Browser
                       └── NO  → Does it require multi-step reasoning?
                                      │
                                      ├── YES → Use MCP Agent
                                      └── NO  → Use Playwright

Наступні два роки

Агенти не зникнуть миттєво, замінивши скриптовану автоматизацію, але вже видно кілька тенденцій.

  1. Гібридні пайплайни стають звичайним явищем. Playwright обробляє стабільні, повторювані 80% завдань, тоді як агент MCP бере на себе непередбачувані 20%, які ламають скрипти під час кожного циклу розробки.
  2. Playwright отримує функції ШІ. Можна очікувати функції відновлення селекторів, коли несправний селектор просить ШІ знайти еквівалентний елемент на оновленій сторінці. Healenium та Reflect вже роблять щось подібне, тож нативна підтримка цієї функції в Playwright є цілком ймовірною.
  3. Надійність агентів покращується. Сучасні агенти іноді неправильно розуміють сторінку, натискають на неправильний елемент або зазнають перешкод від вікон-спливів. Кращі багатомодальні моделі, такі як GPT-4o, Claude 3.5 Sonnet та Gemini 2.0, мають значно зменшити кількість таких проблем.
  4. QA зазнає змін. Замість написання скриптів Playwright тестувальники будуть формулювати свої наміри мовою природи, дозволяючи агентам їх інтерпретувати та виконувати, тим самим переходячи від написання скриптів до визначення бажаних результатів.
  5. Безпека стає актуальною проблемою. Агент із автономним керуванням браузером може натиснути на щось ненавмисне, надіслати форму з неправильними даними або бути підданим маніпуляціям з боку зловмисної сторінки. Вставка команд через веб-контент, коли сторінка змушує агента виконувати ненавмисні дії, вже є задокументованою загрозою. Саме тут полягає найбільша перевага Playwright — він робить саме те, що сказано у скрипті, і нічого більше.

Більш широка картина

Протягом десятиліття автоматизація браузерів була проблемою перекладу: перетворення людських намірів на код, який імітує дії людини. Playwright чудово її вирішив. Тепер агенти відміняють крок перекладу, адже достатньо простої мови для формулювання намірів, а решту бере на себе агент. Це не робить Playwright застарілим. Це робить його спеціалізованим, так само, як хірург продовжує використовувати скальпель у епоху роботизованої хірургії. Скальпель забезпечує точність, контроль та надійність, а робот — здатність керувати складністю, адаптивність та масштаб. Практичне питання більше не полягає у протистоянні Playwright та MCP. Воно полягає у тому, коли потрібен скальпель, а коли — робот.

Пов’язана література

  • Створення локального агента для досліджень у LM Studio за допомогою чотирьох серверів MCP — Об’єднання серверів файлової системи, GitHub, SearXNG та Camofox MCP у одному чаті LM Studio, оптимізація схеми інструменту, додавання запиту щодо плану дослідження та перевірка ефективності за допомогою демонстрації.
  • MCP та OAuth2: Хто авторизував дію агента? — Чому OAuth2 покриває лише частину авторизації агента в рамках MCP, та як OIDC, діапазони, правила confused-deputy, GNAP та можливості взаємодіють між собою.
  • Сімнадцять малих інструментів MCP замість одного величезного агента: система для написання текстів за допомогою ШІ — Як система досліджень та написання текстів розділяє процеси отримання відео, пошуку, розробки чернеток, критики та перевірки коду на окремі інструменти MCP із можливістю створення записів та відстеження дій.
  • Практичні нотатки: „MCP: протокол, який перетворює ШІ з чат-бота на агента ШІ — Детальний огляд практичних нотаток: „MCP: протокол, який перетворює ШІ з чат-бота на агента ШІ“, включаючи контракти, перевірки та готові фрагменти коду для команд, які розробляють системи MCP.
  • Пояснення WebMCP: можливість для веб-сайтів публікувати інструменти замість того, щоб агенти клацали по інтерфейсу — WebMCP дозволяє сайту надавати інструменти, такі як add_todo, безпосередньо AI-агентам, замінюючи процес клацання за допомогою скріншотів. У статті розглядаються визначення інструментів, механізм OAuth та причини того, чому цей формат ще знаходиться на початковій стадії розвитку.
  • Докази у вигляді скріншотів для AI-агентів: повне захоплення сторінки, вибіркове захоплення ділянок та порівняння змін — Чому агентам потрібно більше, ніж просто скріншот від Playwright: повне захоплення всієї сторінки, можливість вибору конкретних ділянок, хешоване зберігання даних, порівняння змін без шуму, контроль за витратами через MCP.