Галоўная / Артыкулы

Playwright ці браўзерныя агенты? Дзе скрыптовая аўтаматызацыя ўсё яшчэ выйграе

Скрыпты Playwright супраць браўзерных агентаў на MCP: крохкасць, дэтэрмінаванасць і кошт, адна задача з рахункам двума спосабамі, рызыкі бяспекі і калі што перамагае.

Выдавец: REACTAPP.TOP8 хв чытання1835 слоў

Крыніцы: Playwright vs WebMCP: Will Browser Automation Survive the Agent Era?

Інтэрнэт быў створаны для людзей, якія клікаюць на лінкі і чытаюць сторункі. Selenium, Puppeteer і Playwright дазволяюць коду выкананы клікі. Больш чым дзесяць гадоў автаматызацыя прыгледача абяцвалася напісаннем скрыпту, пашырэннем кожнага крока і яго паўтарэннем. Адныя AI-агенты зараз змінююць гэта. Яны можуць разумець, планаваць і дзеяць, і яны працуюць з сторункамі так, як і чалавек: адгледзяць яе, зрозумець ўсё, вырашыць, што далей. Гэта паднімае важлівы вопыт: чы не робіць 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 года, — гэта адкрыты стандарт для структураванага з’яеднання модэляў AI, такіх як 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 або тэкст.
  • Стойкасць да змян UI: перастае працаваць, калі змініваецца UI.
  • Настройка: сярэдняя, адколі трэба код.
  • Дэтэрмінізм: абсалютна дэтэрміністычны.
  • Адлагоджэнне: проста, за дапамою лог-файлаў і скрыншотаў.
  • Скорасць: высокая.
  • Косць: толькі вычысленні.
  • Найкрашча для: тэстаў на рэгрэсію і пайплайнаў 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 і візуальную структуру, выявляе форму для заходу, запоўняе даны прынтэна і надае ўсё, шукае элементы навігацыі з пазначэнням «Billing», «Invoices» або падобнымі, знаходзіце найновейшы рахунок за датой і клацае на кнопку завантажэння. Калі інтэрфейс змініцца, агент зноў чытае сторанку і прыстосаваецца. Не трэба адкладзіць жадных скрыптаванняў.

З скрыптавання на інструкцыі

Традыцыйная автаматызацыя запытае, якія саме крокі павінен выконаць камп’ютар. Автаматызацыя эры агента запытае, якога рэзультата хочацца і чы можа ШЫ знайсці неабходныя крокі. Можна сказаць так: скрыпты програмуюць шлях, тады як інструкцыі — пункт прызначэння.

Для простых, стабільных, велікага об’ёму задач, такіх як 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: фундаментальны, тачны і незаменны для структураванай працы, але больш не ўсёўны спосаб дасягнення рэшэнняў. У будучыні для разных задач будуць вікорыстоўваны якія-то з эўх падходаў.

Выбір межы імі

Рашэнне прыменяецца па прынцыпу схемы прайскурання. Спачатку трэба запытацца, чы задача добра апісана з стабільным UI. Калі так, і яна выконваліцца раз за разам у вялікіх масштабах, як у CI чы рэгрэсійных тэстах, тады спрыткі ўсё, што трэба. Калі UI змініцца чы задача едыноразовая, тады лепей падходзіць агент.

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 заместо аднаго велікаг агента: сістэма для напісання за дапамою AI — Як сістэма для даследжэнняў і напісанняя дзеляе працэсы прыёму відэа, пошуку, стварэння чэрнавіка, крытыкі і пераканання коду на адзінаковыя інструменты MCP, з артыфактамі і трэйсінгам.
  • Практычныя заўважэнні: “MCP: протакол, які ператварае AI з чатбота на AI-агента — Паследовны апісанне практычных заўважэнняў: “MCP: протакол, які ператварае AI з чатбота на AI-агента”: контракты, перакананні і слоты для коду для команд, якія ствараюць сістэмы MCP.
  • Паспрацаванне з WebMCP: можлівасць для веб-сайтаў публікуваць інструменты заместо таго, каб агенты клікалі па інтэрфейсах — WebMCP дазваляе веб-сайту выклікваць інструменты, такія як add_todo, безпасэчна для агентаў AI, заменяючы спосаб клікання на скрыншоты. У стацыі рассказваецца пра вызначэнні інструментаў, прынцыпах OAuth і прычынах таго, чаму гэта тэхналагія яшчэ на раннім этапе развіцця.
  • Скрыншоты як доказы для агентаў AI: аблікаванне цэлага староніцы, выбіранне рэгіонаў і прадстаўленне разніцы — Чаму агентам AI патрэбны не толькі скрыншоты, але і ўсе іншы элементы: аблікаванне цэлага староніцы, выбіранне конкрэтных рэгіонаў, хэшаванне дадзеных, прадстаўленне разніцы без шуму, а таксама контроль за выкарыстаннем рэсурсаў MCP.