تصحيح أخطاء الدمى

إيقاف وضع التشغيل بلا واجهة مستخدم رسومية

قد يكون من المفيد أحيانًا معرفة ما يعرضه المتصفّح. بدلاً من تشغيل وضع التشغيل بلا واجهة مستخدم رسومية، يمكنك تشغيل إصدار كامل من المتصفّح باستخدام 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().

استخدام {devtools: true} عند إطلاق Puppeteer

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

تغيير مهلة الاختبار التلقائية

  • jest: jest.setTimeout(100000);
  • ياسمين: jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
  • mocha: this.timeout(100000); (لا تنس تغيير الاختبار لاستخدام الدالة وليس '=>')

أضِف عبارة تقييم تتضمّن برنامج تصحيح أخطاء أو أضِف برنامج تصحيح الأخطاء إلى عبارة تقييم حالية:

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

بعد ذلك، يتوقف الاختبار عن التنفيذ في عبارة التقييم أعلاه، ويتوقف Chromium في وضع تصحيح الأخطاء.

استخدام برنامج تصحيح الأخطاء فيNode.js

يتيح لك هذا الإجراء تصحيح أخطاء رمز الاختبار. على سبيل المثال، يمكنك تخطي await page.click() في نصNode.js ورصد حدوث النقرة في متصفّح رمز التطبيق.

لا يمكنك تشغيل await page.click() في وحدة تحكّم "أدوات مطوري البرامج" بسبب الخطأ 833928 في Chromium. لذا إذا كنت ترغب في تجربة شيء ما، فينبغي عليك إضافته إلى ملف الاختبار.

  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 الداخلية من خلال وحدة تصحيح الأخطاء ضمن مساحة الاسم Pupeteer.

# 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 مثل أي وحش!