Bosh sahifa Wiki Puppeteer

Puppeteer

PuppeteerNode.js orqali Chromium yoki Chrome’ga yaqin browserlarni yuqori darajadagi API bilan boshqarish uchun ishlatiladigan browser automation kutubxonasi. U sahifani ochish, DOM bilan ishlash, screenshot, PDF, scraping, performance tahlili va avtomatik test vazifalarida qo‘llanadi.

Puppeteer Chrome DevTools Protocolga yaqin imkoniyatlardan foydalanadi va browserni headless yoki headed rejimda ishga tushirishi mumkin.

Browser

launch yangi browser process yaratadi.

Konfiguratsiya:

Har request uchun yangi browser ochish qimmat.

Service’da browser pool ishlatilishi mumkin.

Page

Page browserdagi tabni ifodalaydi.

API:

  • goto;
  • click;
  • type;
  • evaluate;
  • screenshot;
  • pdf;
  • waitForSelector;
  • eventlar.

Bir browserda bir nechta page parallel ishlashi mumkin.

Browser context

Alohida cookie va storage holati uchun incognito yoki browser context ishlatiladi.

Bu user sessionlarini izolyatsiya qiladi.

Context yopilganda unga tegishli page’lar ham yopiladi.

Shared default context testlar orasida data qoldirishi mumkin.

page.goto() URLga o‘tadi.

Kutish sharti:

  • load;
  • DOMContentLoaded;
  • network idle;
  • custom response

bo‘lishi mumkin.

Network idle doimiy websocket yoki analytics request mavjud sahifada hech qachon kelmasligi mumkin.

Selector

CSS selector, textga oid helper yoki accessibility selector orqali element topiladi.

Dynamic UI’da element mavjud, visible va enabled holatlarini alohida tekshirish kerak.

DOMga bog‘langan uzun selector maintenance’ni qiyinlashtiradi.

Evaluate

page.evaluate() browser contextida JavaScript bajaradi.

Node variable’lari avtomatik mavjud emas; argument sifatida serializatsiya qilinadi.

Qaytadigan qiymat ham serializable bo‘lishi kerak.

DOM node to‘g‘ridan-to‘g‘ri Node processiga ko‘chmaydi.

Element handle

DOM elementga reference beradi.

Sahifa rerender qilinsa handle eskirishi mumkin.

Kerakli action oldidan qayta query qilish barqarorroq.

Handle disposal memoryni bo‘shatadi.

Locatorga oid yuqori darajadagi APIlar mavjud bo‘lishi mumkin.

Screenshot

Full-page yoki aniq element screenshot olinadi.

Format:

  • PNG;
  • JPEG;
  • WebPga oid support.

Viewport va device scale factor natijaga ta’sir qiladi.

Dynamic animation va font visual diffni beqaror qilishi mumkin.

PDF

Headless Chrome web sahifani PDFga print qilishi mumkin.

Sozlamalar:

  • format;
  • margin;
  • print background;
  • header/footer;
  • landscape.

Print CSS screen CSSdan farq qilishi mumkin.

Remote assetlar yuklanganini kutish kerak.

Network interception

Requestlarni kuzatish, abort qilish yoki o‘zgartirish mumkin.

Masalan:

Har intercepted requestga continue, respond yoki abort javobi berilishi kerak.

Response kuzatuvi

Page request va response eventlarini chiqaradi.

Status, header va timing yig‘iladi.

Redirect chain alohida response’lardan iborat.

Body’ni ko‘p katta response uchun saqlash memory sarfini oshiradi.

Cookie page yoki browser context darajasida o‘qiladi va yoziladi.

Authenticated session oldindan yaratish mumkin.

Secure va SameSite qoidalari browser tomonidan saqlanadi.

Cookie faylida token bo‘lsa artifact himoyalanadi.

Device emulation

Viewport, user agent, touch va device scale sozlanadi.

Mobil layout va browser behaviori taxminan tekshiriladi.

Real device CPU, GPU, browser UI va sensor farqini to‘liq takrorlamaydi.

Performance testi real qurilmada ham bajariladi.

Performance

DevTools metric, tracing va coverage APIlaridan foydalanish mumkin.

Page load:

bo‘yicha tahlil qilinadi.

Automationning o‘zi natijaga overhead qo‘shishi mumkin.

Scraping

Puppeteer JavaScript bilan render qilinadigan sahifadan data olishda ishlatiladi.

Developer:

talablarini hisobga oladi.

Browser automation access controlni chetlab o‘tish vositasi emas.

Download

Browser download event va directory configuration orqali fayl olinadi.

Filename server header yoki browser qaroriga bog‘liq.

Parallel page’lar bir directory’da collision qilishi mumkin.

Har task uchun alohida temporary directory ishlatiladi.

Upload

File inputga local path beriladi.

Browser process boshqa container yoki hostda bo‘lsa file shu environmentda mavjud bo‘lishi kerak.

Remote service file transfer qatlamini alohida tashkil qiladi.

Dialog

Alert, confirm va prompt event orqali boshqariladi.

Handler o‘rnatilmasa dialog navigationni bloklashi mumkin.

Test expected textni tekshiradi, keyin accept yoki dismiss qiladi.

Error handling

Browser process crash, page crash, navigation timeout va detached frame kabi xatolar yuz beradi.

Retry faqat idempotent operationlarda qo‘llanadi.

Browser health tekshiriladi va buzilgan process pooldan chiqariladi.

Security

Untrusted sahifani browserda ochish xavf tug‘diradi.

Container, sandbox, minimal permission va network egress cheklovi ishlatiladi.

--no-sandboxni nazoratsiz qo‘llash isolationni kamaytiradi.

Downloaded fayllar alohida tekshiriladi.

Puppeteer va Playwright

Puppeteer Chromium/Chrome avtomatizatsiyasiga chuqur bog‘langan va Node ekotizimida keng ishlatiladi.

Playwright bir nechta browser engine, context va test runner imkoniyatlarini birlashtiradi.

Oddiy PDF va Chrome automation uchun Puppeteer sodda tanlov bo‘lishi mumkin.

Browser pool

Ko‘p PDF yoki screenshot requestida browser processlarni poolda qayta ishlatish startup xarajatini kamaytiradi. Har task alohida context oladi. Memory leak va crashdan keyin process ma’lum request sonidan so‘ng almashtirilishi mumkin.

Font

Serverda kerakli font bo‘lmasa PDF va screenshot layouti o‘zgaradi. Container image fontlarni aniq versiyada saqlaydi va document.fonts.ready kabi signal bilan renderdan oldin yuklanishini kutadi.

Bog‘liq tushunchalar

Puppeteer, Chrome DevTools Protocol, Chromium, Browser automation, Headless browser, Screenshot, PDF generation, Network interception, Web scraping, Playwright