在当前选定框架的上下文中,将一段 JavaScript 代码片段注入页面以执行。假定执行的脚本是同步的。
script 参数以函数体的形式定义要执行的脚本。该函数返回的值将返回给客户端。

该函数将使用提供的 args 数组调用,这些值可以通过 arguments 对象按指定顺序访问。

在内部,如果 body 参数是函数,则使用 function.toString() 将其转换为字符串。任何对当前范围的引用都会被忽略。

为了确保跨浏览器兼容性,指定的函数不应该使用 ES6 格式(即 () => {})。如果函数执行失败,回调的第一个参数将包含错误信息。

用法

                    .execute(body, [args], [callback])
                
                    .executeScript(body, [args], [callback])
                
                    .document.execute(body, [args], [callback])
                
                    .document.executeScript(body, [args], [callback])
                

示例

describe('execute script', function() {
  it('executes a script in browser', function(browser) {
    browser.executeScript(function(imageData) {
      // resize operation
      return true;
    }, [imageData], function(result) {
      // whatever is returned by the script passed above will be available
      // as result.value
      console.log(result.value); // true
    });

    // scroll to the bottom of the page.
    browser.executeScript('window.scrollTo(0,document.body.scrollHeight);');
  });

  it('executes a script with ES6 async/await', async function(browser) {
    const result = await browser
      .document.executeScript(function(imageData) {
        // resize operation
        return true;
      }, [imageData]);

    console.log(result); // true
  });
});

参数

名称 类型 描述
body string | function

要注入的函数体。

args 数组

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

callback
可选
function

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

返回值

类型 描述
*

脚本结果。

另请参阅

W3C WebDriver 规范