2017-01-30 204 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); 
    })