evaluateHandle<T extends JsHandle> method

Future<T> evaluateHandle<T extends JsHandle>(
  1. @Language('js') String pageFunction, {
  2. List? args,
})

The only difference between Page.evaluate and Page.evaluateHandle is that Page.evaluateHandle returns in-page object (JSHandle).

If the function passed to the Page.evaluateHandle returns a Promise, then Page.evaluateHandle would wait for the promise to resolve and return its value.

A JavaScript expression can also be passed in instead of a function:

// Get an handle for the 'document'
var aHandle = await page.evaluateHandle('document');

JSHandle instances can be passed as arguments to the Page.evaluateHandle:

var aHandle = await page.evaluateHandle('() => document.body');
var resultHandle =
    await page.evaluateHandle('body => body.innerHTML', args: [aHandle]);
print(await resultHandle.jsonValue);
await resultHandle.dispose();

Shortcut for Page.mainFrame.executionContext.evaluateHandle.

Parameters:

  • pageFunction Function to be evaluated in the page context
  • args Arguments to pass to pageFunction

returns: Future which resolves to the return value of pageFunction as in-page object (JSHandle)

Implementation

Future<T> evaluateHandle<T extends JsHandle>(
    @Language('js') String pageFunction,
    {List<dynamic>? args}) async {
  var context = await mainFrame.executionContext;
  return context.evaluateHandle(pageFunction, args: args);
}