量角器浏览器错误日志未完成

时间:2015-09-25 08:09:46

标签: angularjs testing protractor

我想确保我的角应用程序在加载应用程序所在的页面时不会在控制台中记录任何错误。

为此,我使用量角器,到目前为止,我有以下测试:

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中打开控制台并自己查看日志,则会有更多错误和警告日志,但它们不是终端输出的一部分。这怎么可能,我错过了什么?

1 个答案:

答案 0 :(得分: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;
                }
            });
        });
    });
});