跳至主要內容
版本:23.11.1

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