Maison >interface Web >js tutoriel >Comment transmettre correctement des variables à la fonction « page.evaluate() » de Puppeteer ?

Comment transmettre correctement des variables à la fonction « page.evaluate() » de Puppeteer ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-27 20:22:10264parcourir

How to Correctly Pass Variables to Puppeteer's `page.evaluate()` Function?

Passer des variables dans la fonction page.evaluate() de Puppeteer

Dans Puppeteer, la fonction page.evaluate() vous permet d'exécuter du JavaScript personnalisé sur une page Web dans le navigateur. Cependant, il n'est pas immédiatement clair comment transmettre des variables de Node à la fonction page.evaluate() pour les utiliser dans le code évalué.

Lorsque vous essayez de transmettre une variable, l'approche typique consiste à utiliser la syntaxe de la fonction flèche. :

const links = await page.evaluate((evalVar) => {...});

Cependant, si vous rencontrez l'erreur selon laquelle evalVar n'est pas défini dans la fonction flèche, cela signifie que la variable n'est pas transmise à la fonction. correctement.

Pour résoudre ce problème, les variables doivent être transmises comme arguments à la fonction page. La syntaxe ajustée est :

const links = await page.evaluate((evalVar) => {...}, evalVar);  // 1. pass variable as an argument

Ici, la variable evalVar est passée comme argument supplémentaire à la fonction flèche, la rendant accessible dans le code évalué.

Cette technique fonctionne pour passer plusieurs variables également. Ajoutez simplement plus d'arguments à l'appel de fonction page.evaluate() :

await page.evaluate((a, b, c) => { console.log(a, b, c) }, a, b, c)

Il est important de s'assurer que les arguments transmis sont soit sérialisables en JSON, soit des JSHandles d'objets dans le navigateur, car ce sont les arguments pris en charge. types pour transmettre des variables à page.evaluate().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn