Debug Puppeteer

حالت بدون سر را خاموش کنید

گاهی اوقات دیدن آنچه که مرورگر نمایش می دهد مفید است. به‌جای راه‌اندازی در حالت headless، نسخه کامل مرورگر را با استفاده از headless: false :

const browser = await puppeteer.launch({ headless: false });

یواشش کن

گزینه slowMo عملیات Puppeteer را با مقدار مشخص شده در میلی ثانیه کاهش می دهد. این یک راه دیگر برای کمک به دیدن آنچه در حال وقوع است.

const browser = await puppeteer.launch({
  headless: false,
  slowMo: 250, // slow down by 250ms
});

گرفتن خروجی کنسول

می توانید رویداد console را گوش دهید. این همچنین هنگام اشکال زدایی کد در page.evaluate() مفید است:

page.on('console', (msg) => console.log('PAGE LOG:', msg.text()));

await page.evaluate(() => console.log(`url is ${location.href}`));

از دیباگر در مرورگر کد برنامه استفاده کنید

دو زمینه اجرا وجود دارد: node.js که کد آزمایشی را اجرا می کند و مرورگری که کد برنامه را اجرا می کند در حال آزمایش است. این به شما امکان می دهد کد را در مرورگر کد برنامه اشکال زدایی کنید. کد داخل evaluate() .

هنگام راه اندازی Puppeteer از {devtools: true} استفاده کنید

const browser = await puppeteer.launch({ devtools: true });

مهلت زمانی تست پیش فرض را تغییر دهید

  • jest: jest.setTimeout(100000);
  • یاس: jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
  • موکا: this.timeout(100000); (فراموش نکنید که تست را به استفاده از تابع و نه "=>" تغییر دهید)

یک دستور ارزیابی با دیباگر در داخل اضافه کنید یا به یک عبارت ارزیابی موجود، دیباگر را اضافه کنید:

await page.evaluate(() => {
  debugger;
});

سپس اجرای آزمایش در عبارت ارزیابی بالا متوقف می‌شود و Chromium در حالت اشکال‌زدایی متوقف می‌شود.

از دیباگر در node.js استفاده کنید

این به شما امکان می دهد کدهای آزمایشی را اشکال زدایی کنید. برای مثال، می‌توانید از await page.click() در اسکریپت node.js عبور کنید و ببینید که کلیک در مرورگر کد برنامه اتفاق می‌افتد.

به دلیل اشکال 833928 Chromium، نمی‌توانید await page.click() در کنسول DevTools اجرا کنید. بنابراین اگر می خواهید چیزی را امتحان کنید، باید آن را به فایل آزمایشی خود اضافه کنید.

  1. افزودن دیباگر؛ برای آزمایش شما، به عنوان مثال: javascript debugger; await page.click('a[target=_blank]');
  2. headless را روی false تنظیم کنید.
  3. node --inspect-brk اجرا کنید، برای مثال، node --inspect-brk node_modules/.bin/jest tests .
  4. در کروم chrome://inspect/#devices باز کنید و بر روی inspect کلیک کنید.
  5. در مرورگر آزمایشی که به تازگی باز شده است، F8 تایپ کنید تا اجرای آزمایش از سر گرفته شود.
  6. اکنون دیباگر شما ضربه خورده است و می توانید در مرورگر آزمایشی اشکال زدایی کنید

فعال کردن گزارش دقیق

ترافیک پروتکل DevTools داخلی با ماژول اشکال زدایی در فضای نام Puppeteer ثبت می شود.

# Basic verbose logging
env DEBUG="puppeteer:*" node script.js

# Protocol traffic can be rather noisy. This example filters out all Network
# domain messages
env DEBUG="puppeteer:*" env DEBUG_COLORS=true node script.js 2>&1 | grep -v '"Network'

کد Puppeteer (گره) خود را اشکال زدایی کنید

از ndb استفاده کنید:

  • npm install -g ndb (یا از npx استفاده کنید).
  • یک دیباگر را به کد Puppeteer (گره) خود اضافه کنید.
  • ndb (یا npx ndb ) را قبل از دستور تست خود اضافه کنید. به عنوان مثال: ndb jest یا ndb mocha (یا npx ndb jest / npx ndb mocha ).
  • تست خود را در داخل کروم مانند یک رئیس اشکال زدایی کنید!