将变量传递给 Puppeteer 的 Evaluate 函数
在 Puppeteer 中,page.evaluate() 函数允许开发人员在浏览器上下文中执行 JavaScript。但是,将变量传递到此函数可能会很棘手。
请考虑以下示例:
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(); } })();
在此示例中,变量 evalVar 在 page.evaluate() 函数中未定义。要解决此问题,必须将变量作为参数传递给 page 函数:
const links = await page.evaluate((evalVar) => { console.log(evalVar); // 2. should be defined now ... }, evalVar); // 1. pass variable as an argument
通过遵循这种方法,可以轻松地将变量传递到 page.evaluate() 函数中,从而能够执行浏览器上下文中更复杂的操作。
以上是如何正确地将变量传递给 Puppeteer 的 `page.evaluate()` 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!