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

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

Patricia Arquette
Libérer: 2024-12-09 10:20:09
original
639 Les gens l'ont consulté

How Can I Properly Pass Variables to Puppeteer's `page.evaluate()` Function?

Passer des variables à la fonction d'évaluation de Puppeteer

Dans Puppeteer, la fonction page.evaluate() permet aux développeurs d'exécuter du JavaScript dans le contexte du navigateur. Cependant, transmettre des variables dans cette fonction peut être délicat.

Considérez l'exemple suivant :

const puppeteer = require('puppeteer');

(async() => {

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

  const evalVar = 'WHUT??';

  try {

    await page.goto('https://www.google.com.au');
    await page.waitForSelector('#fbar');
    const links = await page.evaluate((evalVar) => {

      console.log('evalVar:', evalVar); // appears undefined

      const urls = [];
      hrefs = document.querySelectorAll('#fbar #fsl a');
      hrefs.forEach(function(el) {
        urls.push(el.href);
      });
      return urls;
    })
    console.log('links:', links);

  } catch (err) {

    console.log('ERR:', err.message);

  } finally {

    // browser.close();

  }

})();
Copier après la connexion

Dans cet exemple, la variable evalVar n'est pas définie dans la fonction page.evaluate(). Pour résoudre ce problème, la variable doit être passée en argument à la fonction page :

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

  console.log(evalVar); // 2. should be defined now
  ...

}, evalVar); // 1. pass variable as an argument
Copier après la connexion

En suivant cette approche, les variables peuvent être facilement passées dans la fonction page.evaluate(), permettant l'exécution de opérations plus complexes dans le contexte du navigateur.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal