使用protractor记录控制台错误日志

4

我想在Protractor中记录控制台错误,方法如下:

日志输出格式如下:

{
  level: {
    value: 900,
    name: 'WARNING'
  },
  message: 'message',
  timestamp: 1442090739962,
  type: ''
}, {
  level: {
    value: 800,
    name: 'INFO'
  },
  message: 'message',
  timestamp: 1442090740723,
  type: ''
}, {
  level: {
    value: 1000,
    name: 'ERROR'
  },
  message: 'error message',
  timestamp: 1442090740723,
  type: ''
},

我想只捕获错误,所以我写了这样的测试

it('it should be detect console errors', function() {
  browser.manage().logs().get('browser').then(function(browserLogs) {
    // browserLogs is an array of objects with level and message fields
    browserLogs.forEach(function(log) {
      if (log.level.value > 900) { // it's an error log
        console.log('Browser console error!');
        console.log(log.message);
      }
    });
  });
});

问题是它有时会捕获错误,有时不会。

当我给websocket提供错误的路径并出现错误时,它会记录日志。但是,当我将错误的路径提供给ng-include,如果在控制台中出现404错误,则不会记录日志。

我正在使用火狐浏览器进行测试。这个控制台插件是基于浏览器的吗?为什么它对控制台错误显示不一致?


这篇文章可能会有所帮助 - http://stackoverflow.com/questions/32186902/protractor-check-console-for-errors-after-action. - giri-sh
你尝试过使用Protractor内置的控制台插件吗? - Dziamid
我尝试过了,但即使控制台中有错误,它仍会打印“Pass:Console output”。 - Ajeet Lakhani
3个回答

1

我遇到了类似的问题,所以我编写了封装函数

injectConsoleTracing = function () {
    browser.executeScript('window.errs=typeof(errs)=="undefined" ? [] : window.errs; window.console.error = function(msg){window.errs.push(msg); }; ');
    browser.executeScript('window.logs=typeof(logs)=="undefined" ? [] : window.logs; window.console.log = function(msg){window.logs.push(msg); }; ');
};

expectNoConsoleErrors = function () {
    browser.executeScript('return window.errs;').then(function (v) {
        expect(v).toEqual([]);
    });
    browser.executeScript('return window.logs;').then(function (v) {
        expect(v).toEqual([]);
    });
};

0

如果800不大于900,那么你怎么能期望捕获错误呢?应该是

if (log.level.value <= 900)

抱歉,错误的日志级别值为1000而不是800。 - Ajeet Lakhani

0
在我的测试套件中,我使用以下代码来检查控制台错误并在有错误时显示它们:
browser.manage().logs().get('browser').then(function(browserLog) {
    if (browserLog.length) {
        console.log('Browser console error!');
        console.error('log: ' + JSON.stringify(browserLog));
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接