在角度量角器茉莉花测试中查看console.log输出

时间:2014-02-27 22:52:16

标签: angularjs jasmine protractor

如何在angularjs量角器jasmine测试中查看console.log输出?截至目前,浏览器自动关闭过快。

更多信息 - 我正在使用angularjs教程,第8步。我正在尝试将e2e测试更改为量角器。我正在使用的量角器配置文件基于%appdata%\ npm \ node_modules \ protractor \ referenceConf.js。在配置文件引用的spec js文件中,我有console.log的实例。但是,在执行量角器e2e测试期间,网站以chrome打开,我看到事情发生在浏览器中,然后浏览器关闭,然后我才能检查任何console.log输出。我想我需要以某种方式保持镀铬。怎么样?

8 个答案:

答案 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)

现在可以实现而无需编写任何特殊代码和插件:

答案 3 :(得分:5)

为了保持浏览器的窗口打开,你应该尝试在调试模式下运行Protractor:

$ <route-to-protractor> debug <route-to-conf-file>

然后在您的spec文件中添加此行以停止执行:

browser.debugger();

在Protractor调试器控制台中,您可以通过键入ccont来跳过停靠点。

此处有更多信息: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

这会将所有浏览器错误日志记录到您运行量角器的命令行