executeAsync
警告
executeAsync
命令已弃用,将在未来版本中移除。请改用 execute
命令,因为它通过 async
/await
提供了更好的错误处理支持。
将一段 JavaScript 代码注入页面,以便在当前选定框架的上下文中执行。假设执行的脚本是异步的,并且必须通过调用提供的回调来发出已完成的信号,该回调始终作为函数的最后一个参数提供。此回调的值将返回到客户端。
异步脚本命令可能不会跨页面加载。如果在等待脚本结果时触发了卸载事件,则应向客户端返回错误。
script 参数以函数体形式定义要执行的脚本。该函数将使用提供的 args 数组调用,并且可以通过 arguments 对象按指定顺序访问这些值。最后一个参数将始终是一个回调函数,必须调用它以表明脚本已完成。
参数可以是任何 JSON 基本类型、数组或 JSON 对象。定义 WebElement 引用 JSON 对象将转换为相应的 DOM 元素。同样,脚本结果中的任何 WebElement 都将作为 WebElement JSON 对象返回到客户端。
注意
真的
用法
browser.executeAsync(script, arguments)
参数
名称 | 类型 | 详情 |
---|---|---|
脚本 | 字符串 ,函数 | 要执行的脚本。 |
参数 可选 | 参数 | 脚本参数 |
示例
executeAsync.js
it('should execute async JavaScript on the page', async () => {
await browser.setTimeout({ script: 5000 })
const result = await browser.executeAsync(function(a, b, c, d, done) {
// browser context - you may not access client or console
setTimeout(() => {
done(a + b + c + d)
}, 3000);
}, 1, 2, 3, 4)
// node.js context - client and console are available
console.log(result) // outputs: 10
});