JSHandle
JSHandleは、ページ内JavaScriptオブジェクトを表します。JSHandleはPage.EvaluateHandleAsync()メソッドで作成できます。
var windowHandle = await page.EvaluateHandleAsync("() => window");
JSHandleは、JsHandle.DisposeAsync()でハンドルが解放されない限り、参照されているJavaScriptオブジェクトがガベージコレクションされるのを防ぎます。JSHandleは、元となるフレームがナビゲートされたり、親コンテキストが破棄されたりすると、自動的に破棄されます。
JSHandleインスタンスは、Page.EvalOnSelectorAsync()、Page.EvaluateAsync()、およびPage.EvaluateHandleAsync()メソッドの引数として使用できます。
メソッド
AsElement
v1.9より前に追加オブジェクトハンドルがElementHandleのインスタンスである場合、null
またはオブジェクトハンドル自体を返します。
使用方法
JsHandle.AsElement();
戻り値
DisposeAsync
v1.9より前に追加jsHandle.dispose
メソッドは、要素ハンドルの参照を停止します。
使用方法
await JsHandle.DisposeAsync();
戻り値
EvaluateAsync
v1.9より前に追加expressionの戻り値を返します。
このメソッドは、このハンドルをexpressionの最初の引数として渡します。
expressionがPromiseを返す場合、handle.evaluate
はプロミスが解決されるのを待ち、その値を返します。
使用方法
var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
Assert.AreEqual("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));
引数
-
ブラウザコンテキストで評価されるJavaScript式。式が関数に評価される場合、その関数は自動的に呼び出されます。
-
arg
EvaluationArgument? (任意)#expressionに渡すオプションの引数。
戻り値
- [object]#
EvaluateHandleAsync
v1.9より前に追加expressionの戻り値をJSHandleとして返します。
このメソッドは、このハンドルをexpressionの最初の引数として渡します。
jsHandle.evaluate
とjsHandle.evaluateHandle
の唯一の違いは、jsHandle.evaluateHandle
がJSHandleを返すことです。
jsHandle.evaluateHandle
に渡される関数がPromiseを返す場合、jsHandle.evaluateHandle
はプロミスが解決されるのを待ち、その値を返します。
詳細については、Page.EvaluateHandleAsync()を参照してください。
使用方法
await JsHandle.EvaluateHandleAsync(expression, arg);
引数
-
ブラウザコンテキストで評価されるJavaScript式。式が関数に評価される場合、その関数は自動的に呼び出されます。
-
arg
EvaluationArgument? (任意)#expressionに渡すオプションの引数。
戻り値
GetPropertiesAsync
v1.9より前に追加このメソッドは、**自身のプロパティ名**をキーとして、プロパティ値のJSHandleインスタンスを値とするマップを返します。
使用方法
var handle = await page.EvaluateHandleAsync("() => ({ window, document }");
var properties = await handle.GetPropertiesAsync();
var windowHandle = properties["window"];
var documentHandle = properties["document"];
await handle.DisposeAsync();
戻り値
GetPropertyAsync
v1.9より前に追加参照されているオブジェクトから単一のプロパティを取得します。
使用方法
await JsHandle.GetPropertyAsync(propertyName);
引数
戻り値
JsonValueAsync
v1.9より前に追加オブジェクトのJSON表現を返します。オブジェクトにtoJSON
関数がある場合でも、それは**呼び出されません**。
参照されているオブジェクトが文字列化できない場合、このメソッドは空のJSONオブジェクトを返します。オブジェクトに循環参照がある場合はエラーをスローします。
使用方法
await JsHandle.JsonValueAsync();
戻り値
- [object]#