ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml) # 执行异步脚本 在页面中注入一段JavaScript,以便在当前选定框架的上下文中执行 (仅是 Web context ) [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml) ## 用法示例 ```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) ## 描述 假定执行的脚本是异步的并且必须在调用提供的回调结束后发出信号, 始终作为函数的最后一个参数提供。该回调的值将返回给客户端。 异步脚本命令可能不会跨页面加载,如果在等待脚本结果时触发了卸载事件,错误将返回给客户端。 脚本参数定义脚本以函数体形式执行,函数将会调用提供的参数数组并且可以按指定的顺序通过arguments对象访问值。 最后一个参数始终是一个回调函数,且必须调用该回调函数表明脚本已执行完成。 参数可以是任意 JSON的基本类型、 数组、 或者 JSON 对象, 定义WebElement引用的JSON对象将转换为相应的DOM元素。 同样,脚本结果中的任何WebElements都将作为WebElement JSON对象返回给客户端。 [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml) ## 支持 [//]: # (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 |平台|Driver|平台版本|Appium版本|Driver版本| |--------|----------------|------|--------------|--------------| | iOS | [XCUITest](../../drivers/ios-xcuitest.md) | None | None | None | | | [UIAutomation](../../drivers/ios-uiautomation.md) | None | None | None | | Android | [UiAutomator2](../../drivers/android-uiautomator2.md) | None | None | None | | | [Espresso](../../drivers/android-espresso.md) | None | None | None | | | [UiAutomator](../../drivers/android-uiautomator.md) | None | None | None | | Mac | [Mac](../../drivers/mac.md) | None | None | None | | Windows | [Windows](../../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 |语言|支持版本|文档| |--------|-------|-------------| |[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 规范 [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml) ### 路径 `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 参数 |名称|描述| |----|-----------| |session_id|将指令发往的会话(session)的ID| [//]: # (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 参数 |名称|类型|描述| |----|----|-----------| | script | `string` | 执行脚本 | | args | `array` | 脚本参数 | [//]: # (DO NOT EDIT THIS FILE! This is an auto-generated file. Editing for this document happens in /commands-yml/commands/web/execute-async.yml) ### 响应 脚本结果 (`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) ## 参考 * [W3C Specification](https://www.w3.org/TR/webdriver/#dfn-execute-async-script) * [JSONWP Specification](https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidexecute_async)