2015-08-24 45 views
2

在我的测试中,我需要检查单击按钮后控制台中是否有错误。但是我得到的唯一错误是来自登录页面,然后在页面加载之后。但按钮点击后没有任何东西,我知道有错误发生。如果没有错误,就有日志。我的功能似乎也没有捕捉到这些。这很令人沮丧。这是我的代码。 (我在我的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 
    }); 
}); 

我这么想吗?有没有不同的/更好的方法来做到这一点?

+0

尝试@alecxe从这里回答 - http://stackoverflow.com/questions/27415507/doing-something-aftereach-describe-in-protractor-with-selenium-server-with-angul –

+0

我不看看从afterEach到afterAll的变化将产生不同的效果 – cocoa

+0

您是否尝试过使用内置于量角器的控制台插件?谢谢。 – alecxe

回答

1

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

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

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

+0

这看起来好像会起作用。但我认为它只是网站很奇怪。 :/另外我忘了提及,当检查非错误时,我重写了它,以便显示所有消息。但除了警告和严重之外没有任它不检查常规的'console.log'吗? – cocoa

+0

你的意思是除了警告和信息。您的控制台错误是来自浏览器的警告。执行停止时发生严重错误。我相信它不会检查常规的'console.log',直到你明确指定它。浏览器在硒/量角器发送给它的每个命令之后都会返回日志。外部记者可以帮助您将错误打印到每个测试的控制台。这里有一个 - [Jasmine-Spec-Reporter](https://www.npmjs.com/package/jasmine-spec-reporter)。 –

+0

我明白了。我也有一位记者。 – cocoa

相关问题