主要コンテンツへスキップ

JSHandle

JSHandleは、ページ内のJavaScriptオブジェクトを表します。JSHandleは、page.evaluateHandle()メソッドで作成できます。

const windowHandle = await page.evaluateHandle(() => window);
// ...

JSHandleは、jsHandle.dispose()でハンドルが解放されない限り、参照されるJavaScriptオブジェクトがガベージコレクションされるのを防ぎます。JSHandleは、その元となるフレームがナビゲートされたり、親コンテキストが破棄されたりすると、自動的に破棄されます。

JSHandleインスタンスは、page.$eval()page.evaluate()、およびpage.evaluateHandle()メソッドの引数として使用できます。


メソッド

asElement

v1.9より前に追加されました jsHandle.asElement

オブジェクトハンドルがElementHandleのインスタンスである場合、nullまたはオブジェクトハンドル自体を返します。

使用法

jsHandle.asElement();

戻り値


dispose

v1.9より前に追加されました jsHandle.dispose

jsHandle.disposeメソッドは、要素ハンドルの参照を停止します。

使用法

await jsHandle.dispose();

戻り値


evaluate

v1.9より前に追加されました jsHandle.evaluate

pageFunctionの戻り値を返します。

このメソッドは、このハンドルをpageFunctionの最初の引数として渡します。

もしpageFunctionPromiseを返す場合、handle.evaluateはそのPromiseが解決されるのを待ってからその値を返します。

使用法

const tweetHandle = await page.$('.tweet .retweets');
expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10 retweets');

引数

戻り値


evaluateHandle

v1.9より前に追加されました jsHandle.evaluateHandle

pageFunctionの戻り値をJSHandleとして返します。

このメソッドは、このハンドルをpageFunctionの最初の引数として渡します。

jsHandle.evaluatejsHandle.evaluateHandleの唯一の違いは、jsHandle.evaluateHandleJSHandleを返すことです。

jsHandle.evaluateHandleに渡された関数がPromiseを返す場合、jsHandle.evaluateHandleはそのPromiseが解決されるのを待ってからその値を返します。

詳細についてはpage.evaluateHandle()を参照してください。

使用法

await jsHandle.evaluateHandle(pageFunction);
await jsHandle.evaluateHandle(pageFunction, arg);

引数

戻り値


getProperties

v1.9より前に追加されました jsHandle.getProperties

このメソッドは、キーとして自身のプロパティ名を、プロパティ値としてJSHandleインスタンスを持つマップを返します。

使用法

const handle = await page.evaluateHandle(() => ({ window, document }));
const properties = await handle.getProperties();
const windowHandle = properties.get('window');
const documentHandle = properties.get('document');
await handle.dispose();

戻り値


getProperty

v1.9より前に追加されました jsHandle.getProperty

参照されたオブジェクトから単一のプロパティを取得します。

使用法

await jsHandle.getProperty(propertyName);

引数

  • propertyName string#

    取得するプロパティ

戻り値


jsonValue

v1.9より前に追加されました jsHandle.jsonValue

オブジェクトのJSON表現を返します。オブジェクトにtoJSON関数がある場合、それは呼び出されません

参照されたオブジェクトが文字列化できない場合、このメソッドは空のJSONオブジェクトを返します。オブジェクトが循環参照を持つ場合、エラーをスローします。

使用法

await jsHandle.jsonValue();

戻り値