2015-08-24 70 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

相關問題