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