首页 > web前端 > js教程 > 如何正确地将变量传递给 Puppeteer 的 `page.evaluate()` 函数?

如何正确地将变量传递给 Puppeteer 的 `page.evaluate()` 函数?

Patricia Arquette
发布: 2024-12-09 10:20:09
原创
616 人浏览过

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

将变量传递给 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板