在我的测试中,我需要在点击按钮后检查控制台中是否有错误。但我得到的唯一错误来自登录页面,然后是页面加载之后。但按钮点击后没有任何内容,我知道发生了错误。如果没有错误,就会有日志。我的功能似乎也没有抓住那些。这非常令人沮丧。这是我的代码。 (我的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 :(得分:1)
如果您只想在按钮点击事件后检查错误,那么您可以在点击事件的承诺内写下checkConsoleErrors()
函数,而不是afterEach()
。这是如何 -
btn.click().then(function(){
timestamp = moment().valueOf();
browser.sleep(10000);
checkConsoleErrors();
});
浏览器返回控制台的error log level值通常是800
(有关信息)和900
(用于警告),因此当您检查900
以上的值时,您的代码不会打印任何内容。高于900的级别是严重消息,当发生致命错误时显示(例如,由于包问题,无效路径等而停止执行)。要查看执行创建的错误,请调整级别>=900
以显示所需的消息。希望这会有所帮助。