evaluate<T> method
If the function passed to the Page.evaluate returns a Promise
, then
Page.evaluate would wait for the promise to resolve and return its value.
If the function passed to the page.evaluate
returns a non-Serializable
value, then page.evaluate
resolves to null.
DevTools Protocol also supports transferring some additional values that
are not serializable by JSON
: -0
, NaN
, Infinity
, -Infinity
, and
bigint literals.
Passing arguments to pageFunction
:
var result = await page.evaluate<int>('''x => {
return Promise.resolve(8 * x);
}''', args: [7]);
print(result); // prints "56"
An expression can also be passed in instead of a function:
print(await page.evaluate('1 + 2')); // prints "3"
var x = 10;
print(await page.evaluate('1 + $x')); // prints "11"
ElementHandle instances can be passed as arguments to the Page.evaluate:
var bodyHandle = await page.$('body');
var html = await page.evaluate('body => body.innerHTML', args: [bodyHandle]);
await bodyHandle.dispose();
print(html);
Shortcut for Page.mainFrame.evaluate
.
Parameters:
pageFunction
Function to be evaluated in the page contextargs
Arguments to pass topageFunction
- Returns: Future which resolves to the return value of
pageFunction
Implementation
Future<T> evaluate<T>(@Language('js') String pageFunction,
{List<dynamic>? args}) {
return mainFrame.evaluate<T>(pageFunction, args: args);
}