Debug poppenspeler

Schakel de headless-modus uit

Soms is het handig om te zien wat de browser weergeeft. In plaats van te starten in de headless-modus, start u een volledige versie van de browser met behulp van headless: false :

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

Vertragen

De slowMo optie vertraagt ​​de Puppeteer-bewerkingen met het opgegeven aantal milliseconden. Het is een andere manier om te helpen zien wat er aan de hand is.

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

Console-uitvoer vastleggen

Je kunt luisteren naar het console evenement. Dit is ook handig bij het debuggen van code in page.evaluate() :

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

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

Gebruik debugger in de applicatiecodebrowser

Er zijn twee uitvoeringscontexten: node.js waarop testcode wordt uitgevoerd, en de browser waarin de applicatiecode wordt getest. Hiermee kunt u fouten opsporen in code in de applicatiecodebrowser; de code binnen evaluate() .

Gebruik {devtools: true} bij het starten van Puppeteer

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

Wijzig de standaardtesttime-out

  • grapje: jest.setTimeout(100000);
  • jasmijn: jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
  • mokka: this.timeout(100000); (vergeet niet om test te wijzigen om de functie te gebruiken en niet '=>' )

Voeg een evaluatie-instructie toe met debugger erin of voeg debugger toe aan een bestaande evaluatie-instructie:

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

De test stopt dan met uitvoeren in de bovenstaande evaluatie-instructie en Chromium stopt in de foutopsporingsmodus.

Gebruik debugger in node.js

Hiermee kunt u testcode debuggen. U kunt bijvoorbeeld wachten op await page.click() in het node.js-script en de klik zien gebeuren in de applicatiecodebrowser.

U kunt await page.click() niet uitvoeren in de DevTools-console vanwege Chromium-bug 833928 . Als je dus iets wilt uitproberen, moet je het toevoegen aan je testbestand.

  1. Voeg debugger toe; naar uw test, bijvoorbeeld: javascript debugger; await page.click('a[target=_blank]');
  2. Stel headless in op false.
  3. Voer node --inspect-brk uit, bijvoorbeeld node --inspect-brk node_modules/.bin/jest tests .
  4. Open in Chrome chrome://inspect/#devices en klik op inspect .
  5. Typ F8 in de nieuw geopende testbrowser om de testuitvoering te hervatten.
  6. Nu wordt uw debugger geactiveerd en kunt u fouten opsporen in de testbrowser

Schakel uitgebreide logboekregistratie in

Intern DevTools-protocolverkeer wordt geregistreerd met de debug-module onder de Puppeteer-naamruimte.

# 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'

Debug uw poppenspelercode (knooppunt).

Gebruik ndb :

  • npm install -g ndb (of gebruik npx ).
  • Voeg een debugger toe aan uw Puppeteer-(knooppunt)code.
  • Voeg ndb (of npx ndb ) toe vóór uw testopdracht. Bijvoorbeeld: ndb jest of ndb mocha (of npx ndb jest / npx ndb mocha ).
  • debug je test in chroom als een baas!