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