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より前に追加されましたオブジェクトハンドルがElementHandleのインスタンスである場合、null
またはオブジェクトハンドル自体を返します。
使用法
jsHandle.asElement();
戻り値
dispose
v1.9より前に追加されましたjsHandle.dispose
メソッドは、要素ハンドルの参照を停止します。
使用法
await jsHandle.dispose();
戻り値
evaluate
v1.9より前に追加されましたpageFunctionの戻り値を返します。
このメソッドは、このハンドルをpageFunctionの最初の引数として渡します。
もしpageFunctionがPromiseを返す場合、handle.evaluate
はそのPromiseが解決されるのを待ってからその値を返します。
使用法
const tweetHandle = await page.$('.tweet .retweets');
expect(await tweetHandle.evaluate(node => node.innerText)).toBe('10 retweets');
引数
-
pageFunction
function | string#ページコンテキストで評価される関数。
-
arg
EvaluationArgument (省略可能)#pageFunctionに渡すオプションの引数。
戻り値
evaluateHandle
v1.9より前に追加されましたpageFunctionの戻り値をJSHandleとして返します。
このメソッドは、このハンドルをpageFunctionの最初の引数として渡します。
jsHandle.evaluate
とjsHandle.evaluateHandle
の唯一の違いは、jsHandle.evaluateHandle
がJSHandleを返すことです。
jsHandle.evaluateHandle
に渡された関数がPromiseを返す場合、jsHandle.evaluateHandle
はそのPromiseが解決されるのを待ってからその値を返します。
詳細についてはpage.evaluateHandle()を参照してください。
使用法
await jsHandle.evaluateHandle(pageFunction);
await jsHandle.evaluateHandle(pageFunction, arg);
引数
-
pageFunction
function | string#ページコンテキストで評価される関数。
-
arg
EvaluationArgument (省略可能)#pageFunctionに渡すオプションの引数。
戻り値
getProperties
v1.9より前に追加されましたこのメソッドは、キーとして自身のプロパティ名を、プロパティ値として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より前に追加されました参照されたオブジェクトから単一のプロパティを取得します。
使用法
await jsHandle.getProperty(propertyName);
引数
戻り値
jsonValue
v1.9より前に追加されましたオブジェクトのJSON表現を返します。オブジェクトにtoJSON
関数がある場合、それは呼び出されません。
参照されたオブジェクトが文字列化できない場合、このメソッドは空のJSONオブジェクトを返します。オブジェクトが循環参照を持つ場合、エラーをスローします。
使用法
await jsHandle.jsonValue();
戻り値