Oyun səhifəsi artıq hazırdır və brauzerdə açılır: taxta görünür, fiqurlar hərəkət edir, "Yeni oyun" düyməsi yerindədir. Amma agent bu səhifəni hələ heç vaxt görməyib. O, faylların mətni ilə işləyirdi, brauzeri siz işə salırdınız, səhifəyə siz baxırdınız, nə baş verdiyini də ona siz danışırdınız. Playwright məhz bu boşluğu aradan qaldırır: agent həmin səhifəni açır, lazım olan elementi tapır, klikləyir və bundan sonra nəyin dəyişdiyini oxuyur.
Aşağıda şahmat səhifəsi nümunəsində bu dövrü addım-addım nəzərdən keçirəcəyik: açmaq, baxmaq, elementi seçmək, əməliyyat etmək və yeni vəziyyəti oxumaq. Quraşdırmanı və serverin qoşulmasını burada təkrarlamırıq. Playwright hələ qoşulmayıbsa, təlimat layihənin README faylındadır.
Lazım olan səhifəni açın
Connected yazısı nəyi təsdiqləyir?
Yalnız bir şeyi: Claude Code Playwright serveri ilə əlaqə qurub və ondan alətlərin siyahısını alıb. Bu zaman hələ heç bir səhifə açılmayıb, hətta brauzer də başladılmamış ola bilər. Connected yalnız bağlantı barədədir: oyununuzun işlədiyini və agentin onu gördüyünü göstərmir.
Cari statusu /mcp əmri ilə yoxlaya bilərsiniz: o, qoşulmuş serverləri və hər birinin imkanlarını sadalayacaq. Bundan sonra əsas iş başlayır. İlk növbədə səhifənin ünvanı lazımdır.
Lokal oyun ya diskdəki faylda, ya da lokal serverdə yerləşir. Belə serverin portu isə hər dəfə eyni olmur. 5173, 8000, 3000 - hansı vasitə ilə başladığınızdan asılıdır. Ünvanı həqiqətən göstərildiyi yerdən götürün: başlatma əmrinin çıxışından və ya oyuna baxdığınız brauzerin ünvan sətrindən. Portu təxmin etsəniz, boş səhifə, hətta başqa layihə aça bilərsiniz; alətin cavabından bunu anlamaq da həmişə asan olmur.
Səhifəni açmaq ayrıca çağırışdır: browser_navigate. Onun bir parametri var: url. Agentə tapşırığı isə adi dildə verirsiniz:
http://localhost:5173/ səhifəsini Playwright ilə aç
və açılan səhifənin başlığını göstər.Səhifə açıldıqdan sonra iki şeyi yoxlayın: agentin həqiqətən keçdiyi ünvanı və səhifənin adını. Bu, bir saniyə çəkir, amma yanlış yerdə görüləcək bir sıra əməliyyatların qarşısını alır. Xüsusən də paralel olaraq başqa lokal layihələr işləyirsə və onlardan biri də localhost-a cavab verirsə.
Playwright brauzeri özü üçün başladır. Sizin tablarınız, genişləndirmələriniz və hesablarda artıq açılmış sessiyalar ora köçürülmür: standart olaraq adi brauzerinizdən ayrı profil istifadə olunur. Lokal oyun üçün bunun fərqi yoxdur, amma "axı o, artıq daxil olduğum saytı açacaq" gözləntisi öz-özünə doğrulmur.
Agent səhifədə nə görür
Açıq səhifəyə üç fərqli üsulla baxmaq olar və hər biri tamam başqa məlumat verir:
| Nə lazımdır | Alət | Cavabda nə gəlir |
|---|---|---|
| Görünüşünü görmək | browser_take_screenshot | səhifənin şəkli |
| Nələrdən ibarət olduğunu bilmək | browser_snapshot | elementlərin mətn ağacı: rollar, adlar, element istinadları |
| Konkret dəyəri oxumaq | browser_evaluate | səhifədə hesablanmış kiçik ifadənin nəticəsi |
Hər üç yol eyni səhifədən başlayır, amma fərqli məlumatlar qaytarır. Snapshot düyməni tapmağa kömək edir, data-turn dəyərini isə ayrıca oxumaq lazımdır. Taxtanın şəkli öz-özlüyündə onun HTML atributlarını göstərmir.
Skrinşot sadəcə şəkildir. "Necə görünür" və "nə harada yerləşir" suallarına yaxşı cavab verir, amma özü browser_click üçün element istinadı vermir. Playwright MCP-nin əsas rejimində əməliyyatlar üçün əlçatanlıq snapshot-ından istifadə olunur. Koordinatlarla klikləmək isə müvafiq alətlər ayrıca aktivləşdirildikdə mümkündür.
Əlçatanlıq snapshot-ı elementlərin təsviridir. Şəkil yox, mətn: səhifəni təşkil edən elementlərin siyahısı, onların rolları (düymə, keçid, daxiletmə sahəsi), adları və sonradan müraciət etmək üçün istinadları. Agent nəyəsə klikləyəndə məhz buna əsaslanır. Sxematik olaraq bir düymə orada təxminən belə görünür:
- button "Yeni oyun" [ref=e12]
- button "Gedişi ləğv et" [ref=e13]Bu, formatı anlamaq üçün sxematik nümunədir, alətin həqiqi çıxışı deyil: dəqiq format server versiyasından asılıdır və məqalə xatirinə onu işə salmayacağıq. Burada vacib olan durğu işarələri deyil, faktın özüdür: düymə agentə mətnli düzbucaqlı kimi yox, rol, ad və istinaddan ibarət sətir kimi gəlir.
İndi isə ən çox çaşqınlıq yaradan məqama baxaq. Oyunda gediş növbəsinin kimdə olduğunu göstərən data-turn nişanı əlçatanlıq snapshot-ına daxil olmur: snapshot səhifənin HTML quruluşundan deyil, elementlərin rollarından, adlarından, vəziyyətlərindən və istinadlarından qurulur. İstənilən data atributu bu siyahıya düşmür. Nişanın dəyəri ayrıca snapshot-da görünə bilər - səhifə onu görünən mətn kimi də göstərirsə. Amma bu halda söhbət oxunmuş atributdan yox, səhifədəki mətndən gedir; bunları qarışdırmayın.
Belə dəyərləri ayrıca əməliyyatla, browser_evaluate aləti vasitəsilə oxuyurlar. Alət səhifənin kontekstində qısa ifadə icra edib nəticəni qaytarır. Bu, sadəcə oxumaq deyil, səhifədə kod işlətməkdir, ona görə agent bəzən bunu etməzdən əvvəl icazə istəyəcək. İfadəni agent özü quracaq, təxminən belə görünə bilər:
// gediş nişanı olan elementi tapıb dəyərini qaytarmaq
() => document.querySelector('[data-turn]')?.getAttribute('data-turn') ?? nullƏlçatanlıq snapshot-ı səhifənin HTML quruluşunun tam surəti deyil, qısa xülasəsidir. Orada elementi tanımağa və klikləməyə kömək edən məlumatlar var, amma hər şey yoxdur. Buna görə də "agent snapshot aldı" və "agent bütün atributları oxudu" fərqli iddialardır; ikincisi birincidən irəli gəlmir.
Agent elementi necə seçir
Koordinatlarla klik niyə bəzən düyməni tutmur?
Çünki koordinatlar düyməni yox, ekrandakı nöqtəni göstərir. Pəncərəni böyütdünüz, yan paneli yığışdırdınız, şrift ölçüsünü dəyişdiniz, səhifənin yuxarısına bir sətir əlavə olundu - nöqtə yerində qaldı, düymə isə yerini dəyişdi. Klik uğurla baş verəcək, sadəcə boş yerə düşəcək.
Buna görə də elementi seçməyin əsas üsulu başqadır. browser_click alətində burada vacib olan iki sahə var: element - "Yeni oyun düyməsi" kimi insanın anlaya biləcəyi təsvir; agentin hara klikləmək istədiyini buradan görə bilərsiniz. Digəri target - snapshot-dakı elementə istinad və ya unikal selektor. Burada snapshot istinadından istifadəni nəzərdən keçirəcəyik. İstinad götürüldüyü snapshot-a bağlıdır və klik məhz həmin elementə düşür. Mətn daxil etmək də eyni qaydadadır, sadəcə alətin adı browser_type-dır və element təsvirinə mətn də əlavə olunur.
Burada sabit qalan istinadın özü deyil, onu tapmaq üsuludur. Rol və ad birlikdə kifayət qədər dəyişməz cütdür: dizayner düyməni ekranın o biri tərəfinə çəksə də, "Yeni oyun" düyməsi yenə "Yeni oyun" düyməsi olaraq qalır. Agent hər yeni snapshot-da bu cütə əsasən elementi yenidən tapır və təzə istinad götürür. Məqalənin davamında "əməliyyatdan sonra yenidən yoxlayın" qaydasının təkrar olunmasının səbəbi də budur.
Taxtadakı xanaları seçmək çətindir: onların sayı 64-dür və hamısının rolu eynidir. Burada tətbiqin öz nişanı kömək edir. Xananın e2 və ya e4 kimi ayrıca adı varsa, onu dəqiq seçmək olar. Snapshot-da bütün xanalar adsızdırsa, yalnız rol və ada görə lazım olanı seçmək mümkün deyil. Onda xananın HTML quruluşunda başqa unikal əlamətinin olub-olmadığını yoxlayın və ya mövcud koordinat alətlərindən istifadə edin.
Playwright MCP-də koordinat alətləri də var, amma standart konfiqurasiyada söndürülüb və ayrıca aktivləşdirilir. Məsələn, canvas üzərindəki elementi başqa cür seçmək mümkün olmayanda lazım ola bilər. Standart konfiqurasiyada bu alətlər olmadığı üçün yalnız şəklə baxaraq əməliyyat etmək mümkün deyil. Bölmənin əvvəlindəki skrinşot barədə xəbərdarlıq da məhz bunu nəzərdə tuturdu.
Əməliyyat və yeni vəziyyət
Soldakı ox dövrü tamamlayır: növbəti əməliyyatdan əvvəl agent səhifənin yenilənmiş təsvirindən istifadə edir. Əvvəlki əməliyyatın cavabında yeni snapshot varsa, ona əsaslanmaq olar. Klikin baş verməsi hələ lazım olan dəyişikliyin edildiyini təsdiqləmir.
İndi bütün bunları agentə bütöv şəkildə tapşıra biləcəyiniz bir ardıcıllıqda birləşdirək. Beş addım var və hər birindən sonra nəyin görünməli olduğu aydındır. Bu ardıcıllıq taxtadakı xanaların adlandırıldığını, əvvəlki bölmədəki e2 və e4 kimi nişanlandığını nəzərdə tutur. Nişanlar yoxdursa, 4-cü addımda xanaları dəqiq seçmək üçün başqa üsul lazımdır.
| Addım | Agent nə edir | Nə görünür |
|---|---|---|
| 1 | oyunun ünvanını açır | səhifənin başlığı, taxta yerindədir |
| 2 | "Yeni oyun" düyməsinə klikləyir | fiqurlar başlanğıc mövqeyindədir |
| 3 | data-turn-u oxuyur | white |
| 4 | səhifənin interfeysindən e2-e4 gedişini edir | piyada iki xana irəliləyib |
| 5 | data-turn-u və e4-dəki fiquru oxuyur | black, e4-də ağ piyada |
Soldakı hissədə başlanğıc vəziyyət, sağdakında isə gedişdən sonra gözlənilən nəticə göstərilir. Aşağıdakı blok onları yoxlama ilə əlaqələndirir: agent gediş nişanını və fiqurların mövqeyini yenidən oxuyur, sonra dəyərləri müqayisə edir. Hərəkəti daha dolğun yoxlamaq üçün e2 xanasının boşaldığına da əmin olun. Təkcə white dəyərinin black ilə əvəzlənməsi hələ piyadanın məhz e4-ə gəldiyini təsdiqləmir.
data-turn barədə açıq danışaq: bu, konkret tətbiqin öz razılaşmasıdır. Səhifənin müəllifi belə nişan göstərməyə qərar verib, ona görə də onu oxumaq mümkündür. Playwright bu nişanı yaratmır və başqa yerdən götürmür, sadəcə səhifədə mövcud olan məlumatı əldə edir. Belə nişanı olmayan başqa səhifədə bu üsul işləməyəcək; görünənlərə əsaslanmalı olacaqsınız.
Hər əməliyyatdan sonra əsas qayda budur: vəziyyəti yenidən oxuyun. Klikdən əvvəl alınan snapshot, nə qədər yeni görünsə də, səhifənin klikdən əvvəlki halını təsvir edir. Taxta yenidən çəkiləndən sonra içindəki element istinadları artıq etibarsız ola bilər; klikdən əvvəl ayrıca oxunan data-turn dəyəri də dəyişə bilər. Əməliyyatı etdinizsə, yenidən yoxlayın.
Tətbiq lazım olan dəyəri qaytarmayıbsa, agentin düzgün cavabı belə olmalıdır: "Oxumaq mümkün olmadı, səhifədə belə atribut yoxdur". Gedişin sanki edildiyinə əsasən təxmin edilən inandırıcı black həqiqətən oxunmuş dəyərdən seçilmir, amma heç nəyi sübut etmir. Agentdən məlumatı öz sözləri ilə danışmağı yox, oxuduğu dəyərləri göstərməyi istəyin.
Əməliyyat alınmayanda
Ən çox rast gəlinən problem "element tapılmadı" mesajıdır. Bunu qısa ardıcıllıqla araşdırın:
- düzgün səhifənin açıldığını yoxlayın. Ünvan və başlıq başlanğıcda yoxladığınız iki məlumatdır;
- səhifənin yükləndiyinə əmin olun. Oyun hələ yüklənməmiş ola bilər, düymə isə sorğudan bir az sonra görünə bilər;
- yeni snapshot alın. Söhbətdə əvvəlcədən olanı yox, təzəsini;
- cari snapshot-dakı təsvirə əsasən elementi yenidən seçin və əməliyyatı təkrarlayın.
Mümkün səbəblərdən biri üçüncü addımda üzə çıxacaq: element hələ də səhifədədir, amma ona olan istinad köhnəlib.
Skrinşot da araşdırmada kömək edir, amma universal vasitə deyil. O, "səhifə necə görünür və nə harada yerləşir" sualına cavab verir. Məsələn, taxtanın boş göründüyünü və ya üstündə modal pəncərənin açıldığını göstərir. Gediş növbəsi səhifədə mətn kimi göstərilirsə, onu skrinşotda da görmək olar. Amma data-turn atributunun dəqiq dəyərini yalnız onu oxumaq təsdiqləyir. Bunlar iki ayrı sual və iki ayrı alətdir; onları qarışdırmaq şəklə baxıb məlumatlar barədə mübahisə etmək kimidir.
Bu, iş tərzini necə dəyişir
Agentə verilən tapşırıq kliklər siyahısı olmaqdan çıxıb yoxlama nöqtələri olan ardıcıllığa çevrilir. Bayaq nəzərdən keçirdiyimiz nümunənin hamısı bir yerdə belə görünür:
http://localhost:5173/ səhifəsini Playwright ilə aç.
1) "Yeni oyun" düyməsinə kliklə;
2) data-turn-u oxu və dəyəri göstər;
3) səhifənin interfeysindən e2-e4 gedişini et;
4) data-turn-u və e4-dəki fiquru yenidən oxu.
Bu dəyərlərdən hansısa səhifədə yoxdursa, bunu de
və onu özündən uydurma.Yadda saxlamalı olduğunuz məqamlar:
- ünvan həmişə başlatma çıxışından götürülmüş həqiqi ünvan olmalıdır, təxmini yox;
- tapşırıqda "oxu və göstər" ifadələri olmalıdır, yoxsa sizə yalnız nəticə barədə hekayə qalacaq;
- vəziyyətlər əməliyyatdan əvvəl və sonra cüt şəkildə göstərilir. Sonda bir dəyərin olması heç nəyi sübut etmir, çünki başlanğıcda onun nə olduğu bilinmir;
- snapshot, skrinşot və atributun oxunması fərqli suallara cavab verir. Onları vərdişə görə yox, suala uyğun seçin;
- bir tədris ardıcıllığı kifayətdir. e2-e4 gedişinin edilməsi bütün oyunun bundan sonra qaydalara uyğun davam edəcəyi demək deyil; bu, ayrıca və daha ciddi yoxlamadır.
Yadda saxlamağın ən asan yolu belədir: brauzer agentə əl və göz verir, amma hazır nəticə vermir. Səhifəni aça, klikləyə və dəyəri oxuya bilər; həmin dəyərin nə demək olduğuna isə yenə siz qərar verirsiniz.
Alətlərin adları və parametrləri 19 sentyabr 2026-cı ildə Playwright MCP README ilə yoxlanılıb və versiyadan asılı olaraq dəyişə bilər. Ümumi ardıcıllıq - açmaq, baxmaq, elementi seçmək, əməliyyat etmək və yenidən oxumaq - dəyişməz qalır.
GO TO FULL VERSION