web-dev-qa-db-fra.com

Débogueur marionnettiste

Est-il possible de déboguer un script de marionnettiste? L'un des boutons n'est pas cliqué pour une raison quelconque. J'ai essayé de différentes manières, et en fait, dans un autre script, je clique dessus, mais pas dans celui-ci.

await page.focus('#outer-container > nav > span.right > span.search-notification-wrapper > span > form > input[type="text"]');
await page.type("Some text");
await page.click('#outer-container > nav > span.right > span.search-notification-wrapper > span > form'); // I am clicking on the form because it did work in the other script
6
elena

Une sorte de réponse tardive, mais pourrait être utile comme référence. Vous pouvez déboguer votre script client comme ça:

await page.evaluate(() => {
  debugger;
  const btn = document.querySelector(...);
  btn.click();
});

Maintenant, lancez simplement le marionnettiste en utilisant:

puppeteer.launch({devtools: true})

Le chrome s'ouvrira et s'arrêtera sur votre point d'arrêt.

5
Yaniv Efraim

Utilisez le code Visual Studio. Vous pouvez définir un point d'arrêt en cliquant simplement sur la barre de gauche dans l'éditeur de texte - https://code.visualstudio.com/docs/nodejs/nodejs-debugging

1
Porus Whitekar
0
elena

Si vous recherchez quelque chose d'interactif, j'ai une image Github repo/docker qui est livrée avec un débogueur interactif, ce qui facilite beaucoup le débogage au niveau du navigateur, car vous voyez tous les deux ce qui se passe et inspectez la page elle-même. J'ai constaté que le débogage dans votre script node/puppeteer n'était vraiment pas utile, car toute l'action se déroule sur le navigateur distant.

Le repo Github est ici , le repo Docker est ici .

0
griffith_joel

Avec asyncawait, vous pouvez définir un point d'arrêt sur la ligne de code et entrer dans l'appel de fonction.

node inspect testscript.js

testscript.js

...
await page.focus('#outer-container > nav > span.right > span.search-notification-wrapper > span > form > input[type="text"]');
await page.type("Some text");
debugger;
await page.click('#outer-container > nav > span.right > span.search-notification-wrapper > span > form'); // I am clicking on the form because it did work in the other script
...

Cela va casser l'appel page.click et nous pourrons ensuite entrer dans la commande step ou s du débogueur.

Ceci est bien sûr très pratique pour les IDE tels que Visual Studio Code.

0
nilobarp