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はPromiseが解決され、その値を返すのを待ちます。
使用法
var tweetHandle = await page.QuerySelectorAsync(".tweet .retweets");
Assert.AreEqual("10 retweets", await tweetHandle.EvaluateAsync("node => node.innerText"));
引数
-
ブラウザーコンテキストで評価される JavaScript 式。式が関数に評価される場合、その関数は自動的に呼び出されます。
-
argEvaluationArgument? (オプション)#expressionに渡すオプションの引数。
戻り値
- [object]#
EvaluateHandleAsync
v1.9より前に追加expressionの戻り値をJSHandleとして返します。
このメソッドは、このハンドルをexpressionの最初の引数として渡します。
jsHandle.evaluateとjsHandle.evaluateHandleの唯一の違いは、jsHandle.evaluateHandleがJSHandleを返すことです。
jsHandle.evaluateHandleに渡された関数がPromiseを返す場合、jsHandle.evaluateHandleはそのPromiseが解決されるのを待ってその値を返します。
詳細については、Page.EvaluateHandleAsync()を参照してください。
使用法
await JsHandle.EvaluateHandleAsync(expression, arg);
引数
-
ブラウザーコンテキストで評価される JavaScript 式。式が関数に評価される場合、その関数は自動的に呼び出されます。
-
argEvaluationArgument? (オプション)#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]#