将一段 JavaScript 代码片段注入页面,以便在当前选定框架的上下文中执行。执行的脚本被假定为异步的。

要注入的函数接收done回调作为参数,当异步操作完成时需要调用此回调。传递给done回调的值将返回给客户端。
要注入函数的附加参数可以作为非空数组传递,该数组将在done回调之前传递。

异步脚本命令可能不会跨越页面加载。如果在等待脚本结果时触发了卸载事件,将返回错误。

用法

                    .executeAsync(body, [args], [callback])
                
                    .executeAsyncScript(body, [args], [callback])
                
                    .document.executeAsync(body, [args], [callback])
                
                    .document.executeAsyncScript(body, [args], [callback])
                

示例

describe('execute async script', function() {
  it('executes async script in browser', function(browser) {
    browser.executeAsyncScript(function(done) {
      setTimeout(function() {
        done(true);
      }, 500);
    }, function(result) {
      // whatever is passed to the `done` callback in the script above
      // will be available as result.value
      console.log(result.value); // true
    });
  });

  it('executes a script with ES6 async/await', async function(browser) {
    const result = await browser
      .document.executeAsync(function(arg1, arg2, done) {
        setTimeout(function() {
          done(arg1);
        }, 500);
      }, [arg1, arg2]);

    // whatever is passed to the `done` callback in the script above
    // will be returned by the command when used with `await`.
    console.log(result); // arg1
  });
});

参数

名称 类型 描述
正文 字符串 | 函数

要注入的函数主体。

args 数组

将传递给函数的参数数组。

callback
可选
函数

命令完成后调用的可选回调函数。

返回值

类型 描述
*

脚本结果。

另请参阅

W3C WebDriver 规范