mirror of
https://github.com/appium/appium.git
synced 2026-04-27 13:59:33 -05:00
136 lines
6.3 KiB
Markdown
136 lines
6.3 KiB
Markdown
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
# Execute Async Script
|
||
|
||
Inject a snippet of JavaScript into the page for execution in the context of the currently selected frame (Web context only)
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
## Example Usage
|
||
|
||
```java
|
||
// Java
|
||
((JavascriptExecutor) driver).executeAsyncScript("window.setTimeout(arguments[arguments.length - 1], 500);");
|
||
|
||
```
|
||
|
||
```python
|
||
# Python
|
||
self.driver.execute_async_script(‘document.title’)
|
||
|
||
```
|
||
|
||
```javascript
|
||
// Javascript
|
||
// webdriver.io example
|
||
driver.setAsyncTimeout(5000)
|
||
var result = browser.executeAsync(function(a, b, c, d, done) {
|
||
// browser context - you may access neither client nor console
|
||
setTimeout(function() {
|
||
done(a + b + c + d);
|
||
}, 3000);
|
||
}, 1, 2, 3, 4)
|
||
|
||
// node.js context - client and console are available
|
||
console.log(result); // outputs: 10
|
||
|
||
// wd example
|
||
await driver.safeExecuteAsync('document.title');
|
||
|
||
```
|
||
|
||
```ruby
|
||
# Ruby
|
||
# ruby_lib example
|
||
execute_async_script("document.title")
|
||
|
||
# ruby_lib_core example
|
||
@driver.execute_async_script("document.title")
|
||
|
||
```
|
||
|
||
```php
|
||
# PHP
|
||
// TODO PHP sample
|
||
|
||
```
|
||
|
||
```csharp
|
||
// C#
|
||
// TODO C# sample
|
||
|
||
```
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
## Description
|
||
|
||
The executed script is assumed to be asynchronous and must signal that is done by invoking the provided callback, which is always provided as the final argument to the function. The value to this callback will be returned to the client.
|
||
|
||
Asynchronous script commands may not span page loads. If an unload event is fired while waiting for a script result, an error should be returned to the client.
|
||
|
||
The script argument defines the script to execute in teh form of a function body. The function will be invoked with the provided args array and the values may be accessed via the arguments object in the order specified. The final argument will always be a callback function that must be invoked to signal that the script has finished.
|
||
|
||
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.
|
||
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
## Support
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
### Appium Server
|
||
|
||
|Platform|Driver|Platform Versions|Appium Version|Driver Version|
|
||
|--------|----------------|------|--------------|--------------|
|
||
| iOS | [XCUITest](/docs/en/drivers/ios-xcuitest.md) | None | None | None |
|
||
| | [UIAutomation](/docs/en/drivers/ios-uiautomation.md) | None | None | None |
|
||
| Android | [UiAutomator2](/docs/en/drivers/android-uiautomator2.md) | None | None | None |
|
||
| | [Espresso](/docs/en/drivers/android-espresso.md) | None | None | None |
|
||
| | [UiAutomator](/docs/en/drivers/android-uiautomator.md) | None | None | None |
|
||
| Mac | [Mac](/docs/en/drivers/mac.md) | None | None | None |
|
||
| Windows | [Windows](/docs/en/drivers/windows.md) | None | None | None |
|
||
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
### Appium Clients
|
||
|
||
|Language|Support|Documentation|
|
||
|--------|-------|-------------|
|
||
|[Java](https://github.com/appium/java-client/releases/latest)| None | [seleniumhq.github.io](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/remote/RemoteWebDriver.html#executeAsyncScript-java.lang.String-java.lang.Object...-) |
|
||
|[Python](https://github.com/appium/python-client/releases/latest)| None | [selenium-python.readthedocs.io](http://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.execute_async_script) |
|
||
|[Javascript (WebdriverIO)](http://webdriver.io/index.html)| None | |
|
||
|[Javascript (WD)](https://github.com/admc/wd/releases/latest)| None | [github.com](https://github.com/admc/wd/blob/master/lib/commands.js#L182) |
|
||
|[Ruby](https://github.com/appium/ruby_lib/releases/latest)| None | [www.rubydoc.info](https://www.rubydoc.info/gems/selenium-webdriver/Selenium/WebDriver/Driver:execute_async_script) |
|
||
|[PHP](https://github.com/appium/php-client/releases/latest)| None | [github.com](https://github.com/appium/php-client/) |
|
||
|[C#](https://github.com/appium/appium-dotnet-driver/releases/latest)| None | [github.com](https://github.com/appium/appium-dotnet-driver/) |
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
## HTTP API Specifications
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
### Endpoint
|
||
|
||
`POST /session/:session_id/execute_async`
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
### URL Parameters
|
||
|
||
|name|description|
|
||
|----|-----------|
|
||
|session_id|ID of the session to route the command to|
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
### JSON Parameters
|
||
|
||
|name|type|description|
|
||
|----|----|-----------|
|
||
| script | `string` | The script to execute |
|
||
| args | `array` | The script arguments |
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
### Response
|
||
|
||
The script result (`any`)
|
||
|
||
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml)
|
||
## See Also
|
||
|
||
* [W3C Specification](https://www.w3.org/TR/webdriver/#dfn-execute-async-script)
|
||
* [JSONWP Specification](https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidexecute_async)
|