2017-01-30 2 views
0

Я хочу получить журналы браузера (console.logs) из chrome с функциями журнала WebdriverIO, но все, что я получаю, это то, что журнал функций не является функцией.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); 
}); 

Кто-нибудь знает, как правильно использовать эту функцию? Он также не работает, когда я просто использую один браузер, а не создаю матрицу, как это было в фрагменте кода.

ответ

3

Вы используете API неправильно. Вы не можете передать обратный вызов методу журнала. Команда возвращает обещание (если вы используете автономный скрипт, подобный этому), так что вам нужно сделать:

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