2017-01-30 190 views
0

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

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); 
}); 

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

回答

3

您使用的API错误。您不能将回调传递给日志方法。该命令返回一个承诺(如果您使用类似的独立脚本),则需要执行以下操作:

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