حالت بدون سر را خاموش کنید
گاهی اوقات دیدن آنچه که مرورگر نمایش می دهد مفید است. بهجای راهاندازی در حالت 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 اجرا کنید. بنابراین اگر می خواهید چیزی را امتحان کنید، باید آن را به فایل آزمایشی خود اضافه کنید.
- افزودن دیباگر؛ برای آزمایش شما، به عنوان مثال:
javascript debugger; await page.click('a[target=_blank]');
- headless را روی false تنظیم کنید.
- node
--inspect-brk
اجرا کنید، برای مثال،node --inspect-brk node_modules/.bin/jest tests
. - در کروم
chrome://inspect/#devices
باز کنید و بر رویinspect
کلیک کنید. - در مرورگر آزمایشی که به تازگی باز شده است،
F8
تایپ کنید تا اجرای آزمایش از سر گرفته شود. - اکنون دیباگر شما ضربه خورده است و می توانید در مرورگر آزمایشی اشکال زدایی کنید
فعال کردن گزارش دقیق
ترافیک پروتکل 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
). - تست خود را در داخل کروم مانند یک رئیس اشکال زدایی کنید!