डीबग Puppeteer

बिना ग्राफ़िक यूज़र इंटरफ़ेस वाले ब्राउज़र मोड को बंद करें

कभी-कभी यह देखना उपयोगी होता है कि ब्राउज़र क्या दिखा रहा है. हेडलेस मोड में लॉन्च करने के बजाय, 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 });

टेस्ट के टाइम आउट होने की डिफ़ॉल्ट सेटिंग में बदलाव करना

अंदर डीबगर की मदद से, आकलन करने का स्टेटमेंट जोड़ें या किसी मौजूदा आकलन स्टेटमेंट में डीबगर जोड़ें:

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

इसके बाद, ऊपर दिए गए आकलन करने वाले स्टेटमेंट में टेस्ट, एक्ज़ीक्यूट करना बंद कर देता है और Chromium, डीबग मोड में बंद हो जाता है.

node.js में डीबगर का इस्तेमाल करें

इससे, टेस्ट कोड को डीबग किया जा सकता है. उदाहरण के लिए, आप node.js स्क्रिप्ट में await page.click() पर जाकर देख सकते हैं कि ऐप्लिकेशन कोड ब्राउज़र में क्लिक होता है.

Chromium बग 833928 की वजह से, आपके पास DevTools कंसोल में await page.click() चलाने का विकल्प नहीं है. इसलिए अगर आपको कुछ आज़माना है, तो आपको उसे अपनी टेस्ट फ़ाइल में जोड़ना होगा.

  1. डीबगर जोड़ें; अपनी जांच में, उदाहरण के लिए: javascript debugger; await page.click('a[target=_blank]');
  2. हेडलेस को 'गलत है' पर सेट करें.
  3. नोड --inspect-brk को चलाएं, जैसे कि node --inspect-brk node_modules/.bin/jest tests.
  4. Chrome में 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).
  • Chromium के अंदर अपने टेस्ट को किसी बॉस की तरह डीबग करें!