WebdriverIO - 获取浏览器日志

WebdriverIO - Get browser logs

我想使用 WebdriverIO 的日志功能从 chrome 获取浏览器日志 (console.logs),但我得到的只是函数日志不是函数。

var WebdriverIO = require('webdriverio');
var chai = require('chai');
var _ = require('lodash');
var chaiAsPromised = require('chai-as-promised');

var expect = chai.expect;
chai.use(chaiAsPromised);

var browser = {
  host: '127.0.0.1',
  port: 4444,
  desiredCapabilities: {
    browserName : 'chrome',
    chromeOptions: {
      args: [
        'no-sandbox',
        'use-fake-device-for-media-stream',
        'use-fake-ui-for-media-stream',
        'mute-audio',
      ]
    },
    loggingPrefs: {
      'driver': 'INFO',
      'browser': 'INFO'
    }
  },
};

var matrix = WebdriverIO.multiremote({
  browserA: browser,
  browserB: browser,
});

chaiAsPromised.transferPromiseness = matrix.transferPromiseness;

var browserA = matrix.select('browserA');
var browserB = matrix.select('browserB');

it('should initialize browsers', function() {
  return matrix.init();
});

it('should open two browsers', function(done) {
  browserA.url('https://127.0.0.1:3000/');
  browserB.url('https://127.0.0.1:3000/');

  matrix.timeouts('implicit', 15000);

  matrix.sync().call(done);
});

it('should return logs', function(done) {
  browserA
      .log('browser', function(err, msg, a) {
          console.log(msg);
      })
      .call(done);
});

有人知道如何正确使用这个功能吗?当我只使用一个浏览器而不像我在代码片段中那样创建矩阵时,它也不起作用。

您使用的 API 有误。您不能将回调传递给日志方法。命令 returns 一个承诺(如果你使用这样的独立脚本)所以你需要做:

browserA
  .log('browser').then(function(msg) {
      console.log(msg);
  })