Hata Ayıklama Kuklacısı

Gözetimsiz modu kapat

Bazen tarayıcının ne görüntülediğini görmek yararlıdır. Gözetimsiz modda başlatmak yerine, headless: false ile tarayıcının tam sürümünü başlatın:

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

Yavaşlatma

slowMo seçeneği, Puppeteer işlemlerini belirtilen milisaniyelik süre kadar yavaşlatır. Bu, neler olup bittiğini görmenize yardımcı olacak başka bir yol.

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

Konsol çıkışını yakalama

console etkinliğini dinleyebilirsiniz. Bu, page.evaluate() içindeki kodda hata ayıklarken de kullanışlıdır:

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

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

Uygulama kodu tarayıcısında hata ayıklayıcıyı kullan

İki yürütme bağlamı vardır: test kodunu çalıştıran Node.js ve test edilen uygulama kodunu çalıştıran tarayıcı. Bu işlem, uygulama kodu tarayıcısındaki, evaluate() içindeki koddaki kodda hata ayıklamanızı sağlar.

Puppeteer'ı başlatırken {devtools: true} kodunu kullanın

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

Varsayılan test zaman aşımını değiştir

  • jest: jest.setTimeout(100000);
  • yasemin: jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
  • mocha: this.timeout(100000); (testi, işlev yerine '=>' kullanılacak şekilde değiştirmeyi unutmayın.)

Hata ayıklayıcının bulunduğu bir değerlendirme ifadesi ekleyin veya mevcut bir değerlendirme ifadesine hata ayıklayıcı ekleyin:

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

Daha sonra test, yukarıdaki değerlendirme ifadesinde yürütülmeyi durdurur ve Chromium, hata ayıklama modunda durur.

Node.js'de hata ayıklayıcıyı kullanma

Bu sayede test kodundaki hataları ayıklayabilirsiniz. Örneğin, Node.js komut dosyasında await page.click() öğesinin üzerine gelebilir ve tıklama işleminin uygulama kodu tarayıcısında gerçekleştiğini görebilirsiniz.

Chromium hatası 833928 nedeniyle await page.click() aracını Geliştirici Araçları konsolunda çalıştıramazsınız. Dolayısıyla, bir şey denemek istiyorsanız onu test dosyanıza eklemeniz gerekir.

  1. Testinize hata ayıklayıcı ekleyin. Örneğin: javascript debugger; await page.click('a[target=_blank]');
  2. Gözetimsiz özelliğini false olarak ayarlayın.
  3. --inspect-brk düğümünü çalıştırın (ör. node --inspect-brk node_modules/.bin/jest tests).
  4. Chrome'da chrome://inspect/#devices uygulamasını açın ve inspect düğmesini tıklayın.
  5. Testin yürütülmesine devam etmek için yeni açılan test tarayıcısında F8 yazın.
  6. Hata ayıklayıcınız tıklandıktan sonra test tarayıcısında hata ayıklayabilirsiniz

Ayrıntılı günlük kaydını etkinleştir

Dahili DevTools protokol trafiği, hata ayıklama modülüyle Puppeteer ad alanı altında günlüğe kaydedilir.

# 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 (düğüm) kodunuzda hata ayıklama

ndb'yi kullanın:

  • npm install -g ndb (veya npx kullanın).
  • Puppeteer (düğüm) kodunuza hata ayıklayıcı ekleyin.
  • Test komutunuzun önüne ndb (veya npx ndb) ekleyin. Örneğin: ndb jest veya ndb mocha (veya npx ndb jest / npx ndb mocha).
  • Chromium'da testinizin hatalarını ayıklayın!