execute
Inject a snippet of JavaScript into the page for execution in the context of the currently selected frame.
The executed script is assumed to be synchronous and the result of evaluating the script is returned to
the client. An async function is awaited on both WebDriver Classic and BiDi, which replaces executeAsync.
The script argument defines the script to execute in the form of a function body. The value returned by that function will be returned to the client. The function will be invoked with the provided args array and the values may be accessed via the arguments object in the order specified.
Arguments may be any JSON-primitive, array, or JSON object. JSON objects that define a WebElement reference will be converted to the corresponding DOM element. Likewise, any WebElements in the script result will be returned to the client as WebElement JSON objects.
BiDi sessions preserve Blob and File results. The value arrives in the test as a Blob or
File; read it with text() or arrayBuffer(). A Blob or File nested in an array, plain
object, class instance, Map, or Set is preserved the same way. A FileList that contains
files is returned as an array of File objects. A cyclic reference inside a value that also
contains a Blob or File is returned as null.
Usage​
await browser.execute(script, arguments)
Parameters​
| Name | Type | Details |
|---|---|---|
script | String, Function | The script to execute. |
argumentsoptional | * | script arguments |
Examples​
it('should inject javascript on the page', async () => {
const result = await browser.execute((a, b, c, d) => {
// browser context - you may not access client or console
return a + b + c + d
}, 1, 2, 3, 4)
// node.js context - client and console are available
console.log(result) // outputs: 10
});
it('should return a blob from the browser', async () => {
const blob = await browser.execute(() => new Blob(['hello'], { type: 'text/plain' }))
console.log(blob.type) // outputs: text/plain
console.log(await blob.text()) // outputs: hello
});
Returns​
- <*>
return: The script result.