Puppeteer 中文文档v25.8.0

Page.evaluate() 方法

在页面的上下文中求值一个函数,并返回结果。

如果传给 page.evaluate 的函数返回一个 Promise,则该方法会等待该 Promise 解析,并返回其值。

签名

class Page {
  evaluate<
    Params extends unknown[],
    Func extends EvaluateFunc<Params> = EvaluateFunc<Params>,
  >(
    pageFunction: Func | string,
    ...args: Params
  ): Promise<Awaited<ReturnType<Func>>>;
}

参数

参数

类型

说明

pageFunction

Func | string

在页面内运行的函数

args

Params

要传给 pageFunction 的参数

返回值:

Promise<Awaited<ReturnType<Func>>>

pageFunction 的返回值。

示例 1

const result = await frame.evaluate(() => {
  return Promise.resolve(8 * 7);
});
console.log(result); // prints "56"

你也可以传入字符串来代替函数(不过推荐使用函数,因为函数更易于调试,也更适合与 TypeScript 一起使用):

示例 2

const aHandle = await page.evaluate('1 + 2');

为了获得最佳的 TypeScript 体验,你应该将 pageFunction 的类型作为泛型传入:

const aHandle = await page.evaluate(() => 2);

示例 3

ElementHandle 实例(包括 JSHandle)可以作为参数传给 pageFunction

const bodyHandle = await page.$('body');
const html = await page.evaluate(body => body.innerHTML, bodyHandle);
await bodyHandle.dispose();