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(); } })();
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
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!