2015-09-25 49 views
0

我要確保加載了應用程序所在的頁面時,我的角度應用程序不能在控制檯登錄任何錯誤。量角器瀏覽器錯誤日誌無法完成

對於我用量角器,到目前爲止,我有以下測試:

spec.js:

describe('Protractor Demo App', function() { 


    it('should show all logs', function() { 

     browser.get('http://localhost:9050/#/10'); 

     browser.sleep(20000) 

     browser.manage().logs().get('browser').then(function (browserLogs) { 

      console.log(browserLogs) 

      browserLogs.forEach(function (log) { 
       console.log("-------------------"); 
       console.log(log.message); 
       if (log.level.value > 900) { 
        throw log.message; 
       } 
      }); 
     }); 


    }); 
}); 

conf.js:

exports.config = { 
    framework: 'jasmine2', 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    specs: ['spec.js'], 
    jasmineNodeOpts: { 
     // If true, display spec names. 
     isVerbose: true, 
     // If true, print colors to the terminal. 
     showColors: true, 
     // If true, include stack traces in failures. 
     includeStackTrace: true, 
     // Default time to wait in ms before a test fails. 
     defaultTimeoutInterval: 30000 
    }, 

    capabilities: { 
     'browserName': 'chrome', 
     'loggingPrefs' : {"driver": "ALL", "server": "ALL", "browser": "ALL"} 
    }, 


}; 
當我在看終端

輸出我只得到日誌的第一個元素。但是,如果我使用chrome打開控制檯並查看日誌,那麼還有更多錯誤和警告日誌,但它們不是終端輸出的一部分。這怎麼可能,我錯過了什麼?

+0

你在chrome中獲得的日誌級別是什麼?嘗試將日誌級別更改爲800 - 'if(log.level.value> = 800)',因爲大多數日誌級別爲800或900 –

+0

奇怪,您的代碼對我來說工作正常,您可以嘗試'console.log JSON.stringify(log))'? – cvakiitho

+0

@GirishSortur我爲測試添加了我的配置。更改loggingPrefs使其更好,但日誌仍未完成。 Firefox的行爲類似 – IHeartAndroid

回答

3

我也陷入了同樣的問題,用量角器報道控制檯錯誤是不一樣的在瀏覽器中手動打開一個頁面時,我看到了錯誤。這是我如何解決我的問題,我用navigate()方法而不是get()。它們應該是相同的,但至少在我的情況下,它們在瀏覽器控制檯中產生不同的結果。

describe('Protractor Demo App', function() { 

    it('should show all logs', function() { 
     browser.get('http://localhost:9050/#/10'); 

     // Clear console log 
     browser.manage().logs().get('browser'); 

     // Load the page again, now with the navigate() method 
     browser.navigate().to('http://localhost:9050/#/10'); 

     browser.manage().logs().get('browser').then(function (browserLogs) { 

      console.log(browserLogs); 

      browserLogs.forEach(function (log) { 
       console.log("-------------------"); 
       console.log(log.message); 
       if (log.level.value > 900) { 
        throw log.message; 
       } 
      }); 
     }); 
    }); 
}); 
+0

navigate()適合我。非常感謝你。 – IHeartAndroid