A-A+

chrome-remote-interface 中文api

2017年07月29日 自动化测试 暂无评论 阅读 434 次

API

  1. module([options], [callback])基于chrome调试协议连接调试目标

    options object类型,具有如下属性:

    • host 默认localhost
    • port 默认9222
    • chooseTab 决定调试哪个tab。该参数可以为三种类型:
      • function 提供一个返回tab序号的函数
      • object 正如new 和 list返回的对象一样
      • string websocket url
        默认为一个函数,返回当前激活状态的tab的序号,如:function(tabs){return 0;}
    • protocol 协议描述符,默认由remote选项来定是否使用调试目标提供的协议描述符
    • remote 默认false,如果protocol设置了,该选项不会起作用

    callback
    如果callback是函数类型,则该函数在connect事件发生后会得到回调,并返回EventEmitter对象,如果不是,则返回Promise对象。

    EventEmitter对象支持如下事件:

    • connect
      function (chrome) {}

      当websocket连接建立后触发,chrome是Chome类型的实例。

    • disconnect
        function () {}

      关闭websocket连接时触发

    • error
        function (err) {}

      当通过host:port/json无法到达,或websocket连接无法建立时触发
      err,Error类型的错误对象

    使用样例,针对chrome浏览器:

    const Chrome = require('chrome-remote-interface');
    Chrome(function (chrome) {
     with (chrome) {
         Network.requestWillBeSent(function (params) {
             console.log(params.request.url);
         });
         Page.loadEventFired(function () {
             close();
         });
         Network.enable();
         Page.enable();
         once('ready', function () {
             Page.navigate({'url': 'https://github.com'});
         });
     }
    }).on('error', function (err) {
     console.error('Cannot connect to Chrome:', err);
    });
  2. module.Protocol([options],[callback])获取chrome调试协议描述符

    options object类型,具有如下属性:

    • host 默认localhost
    • port 默认9222
    • remote 默认falsecallback 回调函数,在获取到协议内容后调用,函数接收如下参数:
    • err Error一个错误对象,如果有错误的话
    • protocol 包含以下属性
      • remote 是否远程协议
      • descriptor chrome调试协议描述符

    使用样例:

    const Chrome = require('chrome-remote-interface');
    Chrome.Protocol(function (err, protocol) {
     if (!err) {
         console.log(JSON.stringify(protocol.descriptor, null, 4));
     }
    });
  3. module.List([options], [callback])获取所有的tabs,当然在node中只会有一个

    options object类型,具有如下属性:

    • host 默认localhost
    • port 默认9222
    • remote 默认falsecallback 回调函数,在获取到tabs内容后调用,函数接收如下参数:
    • err Error一个错误对象,如果有错误的话
    • tabs 获取到的tab数组

    使用样例:

    const Chrome = require('chrome-remote-interface');
    Chrome.List(function (err, tabs) {
     if (!err) {
         console.log(tabs);
     }
    });
  4. module.New([options], [callback])创建新的tab

    options object类型,具有如下属性:

    • host 默认localhost
    • port 默认9222
    • url 新tab加载的url 默认about:blankcallback 回调函数,在新tab创建后调用,函数接收如下参数:
    • err Error一个错误对象,如果有错误的话
    • tab 新增的tab

    使用样例:

    const Chrome = require('chrome-remote-interface');
    Chrome.New(function (err, tab) {
     if (!err) {
         console.log(tab);
     }
    });
  5. module.Activate([options], [callback])激活指定tab

    options object类型,具有如下属性:

    • host 默认localhost
    • port 默认9222
    • id 目标tab的idcallback 回调函数,在新tab创建后调用,函数接收如下参数:
    • err Error一个错误对象,如果有错误的话

    使用样例:

    const Chrome = require('chrome-remote-interface');
    Chrome.Activate({'id': 'CC46FBFA-3BDA-493B-B2E4-2BE6EB0D97EC'}, function (err) {
     if (!err) {
         console.log('success! tab is closing');
     }
    });
  6. module.Close([options], [callback])关闭指定tab

    options object类型,具有如下属性:

    • host 默认localhost
    • port 默认9222
    • id 目标tab的idcallback 回调函数,在新tab创建后调用,函数接收如下参数:
    • err Error一个错误对象,如果有错误的话

    使用样例:

    const Chrome = require('chrome-remote-interface');
    Chrome.Close({'id': 'CC46FBFA-3BDA-493B-B2E4-2BE6EB0D97EC'}, function (err) {
     if (!err) {
         console.log('success! tab is closing');
     }
    });
  7. module.Version([options], [callback])获取版本信息

    options object类型,具有如下属性:

    • host 默认localhost
    • port 默认9222callback 回调函数,在新tab创建后调用,函数接收如下参数:
    • err Error一个错误对象,如果有错误的话
    • info json object

    使用样例:

    const Chrome = require('chrome-remote-interface');
    Chrome.Version(function (err, info) {
     if (!err) {
         console.log(info);
     }
    });
  8. Chrome 类支持的事件:
    • event在远程调试目标发送通知时触发,一般是远程对象执行了客户端提交的方法后
        function (message) {}

      message包含如下属性:

      • method 通知内容,方法名 如:'Network.requestWillBeSent'
      • params 参数内容

      使用样例:

        chrome.on('event', function (message) {
            if (message.method === 'Network.requestWillBeSent') {
                console.log(message.params);
            }    
        });
    • <method>调试目标通过websocket发送了一个指定方法名的通知
        function (params) {}

      使用样例:

        chrome.on('Network.requestWillBeSent', console.log);
    • ready每次没有调试命令等待调试目标返回时触发
        function () {}

      使用样例:

      只在Network和Page激活后加载一个url

        chrome.Network.enable();
        chrome.Page.enable();
        chrome.once('ready', function () {
            chrome.Page.navigate({'url': 'https://github.com'});
        });

    支持的方法

    • chrome.send(method, [params], [callback])发送一个调试命令

      method 命令名称
      params 参数
      callback 当远程对象对该命令发送一个应答后调用,函数具有以下参数:

      • error boolean 是否成功
      • response 如果error===true,返回一个error对象,{error:...},否则返回一个应答,{result:...}注意:在chrome调试规范里提到的id字段,在这里被内部管理不会暴露给用户

      使用样例:

        chrome.send('Page.navigate', {'url': 'https://github.com'}, console.log);
    • chrome.<domain>.<method>([params], [callback])是chrome.send('<domain>.<method>', params, callback);的一种变形

      例如:

        chrome.Page.navigate({'url': 'https://github.com'}, console.log);
    • chrome.<domain>.<event>(callback)是chrome.on('<domain>.<event>', callback)的变形

      例如:

        chrome.Network.requestWillBeSent(console.log);
    • chrome.close([callback])关闭与远程调试目标的连接
      callback会在websocket关闭成功后调用

给我留言

Copyright © web前端技术开发个人博客 保留所有权利  京ICP备14060653号 Theme  Ality

用户登录