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