如何在angularjs量角器jasmine测试中查看console.log输出?截至目前,浏览器自动关闭过快。
更多信息 - 我正在使用angularjs教程,第8步。我正在尝试将e2e测试更改为量角器。我正在使用的量角器配置文件基于%appdata%\ npm \ node_modules \ protractor \ referenceConf.js。在配置文件引用的spec js文件中,我有console.log的实例。但是,在执行量角器e2e测试期间,网站以chrome打开,我看到事情发生在浏览器中,然后浏览器关闭,然后我才能检查任何console.log输出。我想我需要以某种方式保持镀铬。怎么样?
答案 0 :(得分:37)
使用browser.manage().logs().get('browser')
browser.manage().logs().get('browser').then(function(browserLogs) {
// browserLogs is an array of objects with level and message fields
browserLogs.forEach(function(log){
if (log.level.value > 900) { // it's an error log
console.log('Browser console error!');
console.log(log.message);
}
});
});
答案 1 :(得分:8)
一般误解是console.log
会记录浏览器中的内容。那是不对的。当您运行测试以及测试结果时,您应该在终端中看到console.log()
值。浏览器控制台与此完全不同。
一般例子:
it('get name as John', function(){
element(by.id('name')).getText().then(function(value){
console.log(value);
})
});
终端的结果:
John
get name as John - pass
希望它有所帮助。
答案 2 :(得分:6)
现在可以实现而无需编写任何特殊代码和插件:
protractor-console-plugin
(仅限Chrome)protractor-console
答案 3 :(得分:5)
为了保持浏览器的窗口打开,你应该尝试在调试模式下运行Protractor:
$ <route-to-protractor> debug <route-to-conf-file>
然后在您的spec文件中添加此行以停止执行:
browser.debugger();
在Protractor调试器控制台中,您可以通过键入c
或cont
来跳过停靠点。
此处有更多信息:https://github.com/angular/protractor/blob/master/docs/debugging.md
现在,为了获取控制台内容,您可以在Protractor FAQ中查看如何操作: https://github.com/angular/protractor/blob/master/docs/faq.md#how-can-i-get-hold-of-the-browsers-console
类似的东西:
browser.manage().logs().get('browser').then(function(browserLog) {
console.log('log: ' + require('util').inspect(browserLog));
})
答案 4 :(得分:2)
您可能还想更改日志记录级别以查看其他类型的控制台输出。
请参阅我对量角器faq的建议更新,以执行此操作here
答案 5 :(得分:2)
一个简单的选择是使用:
browser.pause();
protractor/api/browser.pause
例如:
it('should .. test stuff', function() {
browser.pause(); //--->the automation will pause here - follow the instructions in your terminal to continue
//--->your broken testing magic here...
});
将该方法调用作为规范主体中您需要查看浏览器控制台的第一项。
浏览器暂停后,您将控制自动化。然后,您可以照常与浏览器交互,检查不同状态的元素,检查浏览器控制台等。
在终端输入c
继续测试以继续测试 - 将会出现提示,提示您等待输入。
答案 6 :(得分:1)
您可以随时覆盖测试中的console.log:)
logMessages = [];
console.log = function(message) {
logMessages.push(message);
}
您也可以使用$ log而不是console.log并使用这样的解决方案将一些钩子放入日志消息中:https://gist.github.com/lrvick/6938531
答案 7 :(得分:1)
如果你
import requests
url = 'https://graph.microsoft.com/v1.0/users/{{users email}}/messages/{{messageID}}/attachments'
body = None
head = {"Content-Type": "application/json;charset=UFT-8", "Authorization": "Bearer " + accessToken}
response1 = requests.get(url, data=body, headers=head)
response = response1.text
这会将所有浏览器错误日志记录到您运行量角器的命令行