使用Protractor检查浏览器控制台中是否有错误

时间:2014-06-03 08:39:19

标签: javascript angularjs selenium testing protractor

我正在使用Protractor来测试AngularJS

我想检查一下,在测试结束时没有发生未捕获的异常并打印到浏览器控制台。

有一种简单的方法吗?

4 个答案:

答案 0 :(得分:14)

如果您将Protractor与Jasmine一起使用,请使用以下代码:

afterEach(function() {
    browser.manage().logs().get('browser').then(function(browserLog) {
        expect(browserLog.length).toEqual(0);
    });
});

如果没有控制台错误,这将通过测试用例。如果存在任何控制台错误,则测试将失败。

有关如何访问浏览器控制台内容的说明,请参阅常见问题解答的How can I get hold of the browser's console部分。

答案 1 :(得分:14)

Protractor 2.0.0 has introduced专门针对该任务的新console插件。

将以下内容添加到量角器配置中:

plugins: [{
    path: '/path/to/node_modules/protractor/plugins/console/index.js',
    failOnWarning: true,
    failOnError: true
}],

答案 2 :(得分:1)

如果您没有将Protractor与默认测试框架一起使用,我们可以通过一些努力来调整已接受的使用Cucumber.js的答案。

this.After(function(callback) {
    browser.manage().logs().get('browser').then(function(browserLog) {
        if (browserLog.length !== 0) {
            var failMessage = "There was output in the browser console:" +
                              browserLog.map(JSON.stringify).join(";\n");
            callback.fail(failMessage);
        }
        else {
            callback();
        }
    });
});

您需要查看After hooks上的文档,这些文档的Cucumber等同于Jasmine的afterEach

答案 3 :(得分:0)

@velochy如何声明该模块现在有自己的软件包:https://www.npmjs.com/package/protractor-console-plugin

您可以在protractor.conf中使用它:

  plugins: [{
    package: 'protractor-console-plugin',
    failOnWarning: {Boolean}                (Default - false),
    failOnError: {Boolean}                  (Default - true),
    logWarnings: {Boolean}                  (Default - true),
    exclude: {Array of strings and regex}   (Default - [])
  }]