WebdriverIO - 获取浏览器日志

时间:2017-01-30 11:01:48

标签: selenium mocha webdriver-io

我希望通过带有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);
});

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

1 个答案:

答案 0 :(得分:4)

您使用的API错误。您无法将回调传递给log方法。该命令返回一个promise(如果你使用这样的独立脚本),所以你需要这样做:

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