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 | 関数 | 文字列 | ページ内で実行される関数 |
args | パラメータ | pageFunctionに渡される引数 |
戻り値
Promise<Awaited<ReturnType<関数>>>
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();