execute
Inject a snippet of JavaScript into the page for execution in the context of the currently selected
frame using the given element as scope, because it is on the element scope it means that WebdriverIO will
automatically wait for the element to exist before executing the script.
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, 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 same way browser.execute does, including
values nested in arrays, plain objects, class instances, Map, Set, and FileList.
Usage​
await $(selector).execute(script, arguments)
Parameters​
| Name | Type | Details |
|---|---|---|
script | String, Function | The script to execute. |
argumentsoptional | * | script arguments |
Example​
it('should wait for the element to exist, then executes javascript on the page with the element as first argument', async () => {
const text = await $('div').execute((elem, a, b, c, d) => {
return elem.textContent + a + b + c + d
}, 1, 2, 3, 4);
// node.js context - client and console are available
console.log(text); // outputs "Hello World1234"
});
Returns​
- <*>
return: The script result.