无法在第二个 page.evaluate 中访问第一个 page.evaluate 中定义的变量(node.js puppeteer)

Cannot access in the second page.evaluate a variable defined in the first page.evaluate (node.js puppeteer)

await page.evaluate(() => {var a = 10; console.log(a);});
await page.evaluate(() => {console.log(a);});

第二个报错:

Evaluation failed: ReferenceError: a is not defined

这两个调用似乎在 2 个不同的浏览器上下文中有效?

此外,我无法在浏览器的控制台中访问此变量,但浏览器的日志显示:

var 变量是函数范围的,因此在您的情况下 a 仅在第一个函数内定义。你可以让它成为全球:

  await page.evaluate(() => { window.a = 10; console.log(a); });
  await page.evaluate(() => { console.log(a); });

或保存并从上下文传输到上下文:

  const a = await page.evaluate(() => { var a = 10; console.log(a); return a; });
  await page.evaluate((a) => { console.log(a); }, a);