我正在使用Protractor来测试AngularJS
我想检查一下,在测试结束时没有发生未捕获的异常并打印到浏览器控制台。
有一种简单的方法吗?
答案 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 - [])
}]