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
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.
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
J'ai trouvé cela utile: https://github.com/GoogleChrome/puppeteer#debugging-tips Vous avez cette piste ici: https://github.com/GoogleChrome/puppeteer/issues/868
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.
Avec async
await
, 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.