量角器在操作后检查控制台是否存在错误

时间:2015-08-24 16:09:59

标签: javascript angularjs protractor

在我的测试中,我需要在点击按钮后检查控制台中是否有错误。但我得到的唯一错误来自登录页面,然后是页面加载之后。但按钮点击后没有任何内容,我知道发生了错误。如果没有错误,就会有日志。我的功能似乎也没有抓住那些。这非常令人沮丧。这是我的代码。 (我的config.js文件中有登录代码。)

function checkConsoleErrors() {
  browser.manage().logs().get('browser').then(function (browserLog) {
    if (browserLog.length) {
      browserLog.forEach(function(log){
        var error = log.level.value > 900;
        if(error) {
          console.error('ERROR: ', log.message);
          if (log.timestamp > timestamp) { 
            expect(error).toBeFalsy(); //only check for errors after the button click
          }
        }
      });
    }
  });
}

describe('Errors', function() {
  afterEach(function() {
    checkConsoleErrors();
  });
  it('should have no errors', function() {
    //code here
    btn.click();
    timestamp = moment().valueOf(); //capture the time the button was clicked
    browser.sleep(10000); //wait
  });
});

我错过了什么吗?是否有不同/更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您只想在按钮点击事件后检查错误,那么您可以在点击事件的承诺内写下checkConsoleErrors()函数,而不是afterEach()。这是如何 -

btn.click().then(function(){
    timestamp = moment().valueOf();
    browser.sleep(10000);
    checkConsoleErrors();
});

浏览器返回控制台的error log level值通常是800 (有关信息)900 (用于警告),因此当您检查900以上的值时,您的代码不会打印任何内容。高于900的级别是严重消息,当发生致命错误时显示(例如,由于包问题,无效路径等而停止执行)。要查看执行创建的错误,请调整级别>=900以显示所需的消息。希望这会有所帮助。