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

Bil*_*rtz 41 jasmine angularjs protractor

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

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

Moh*_*sen 41

使用 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);
      }
   });
});
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不适用于最新的量角器v3和firefox (7认同)
  • 我在哪里添加该代码块?在规格文件或配置中?更多细节会有所帮助。 (2认同)
  • 这个答案的缺失部分是我需要根据https://github.com/angular/protractor/blob/master/docs/faq.md#how-can-i-在配置文件中添加loggingPrefs部分. get-hold-of-browsers-console,例如功能:{loggingPrefs:{browser:"ALL"}}, (2认同)

San*_*ndy 8

一般的误解是console.log在浏览器中记录内容.那是不对的.当您运行测试时,以及测试结果,您应该console.log()在终端中看到值.浏览器控制台与此完全不同.

一般例子:

it('get name as John', function(){
        element(by.id('name')).getText().then(function(value){
        console.log(value);
    })
});
Run Code Online (Sandbox Code Playgroud)

结果在终端:

John
get name as John - pass
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.


ale*_*cxe 6

现在可以在不编写任何特殊代码和插件的情况下实现:


pac*_*cog 5

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

$ <route-to-protractor> debug <route-to-conf-file>
Run Code Online (Sandbox Code Playgroud)

然后在您的spec文件中将此行添加到您希望执行停止的位置:

browser.debugger();
Run Code Online (Sandbox Code Playgroud)

在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-持有的最的浏览器控制台

就像是:

browser.manage().logs().get('browser').then(function(browserLog) {
  console.log('log: ' + require('util').inspect(browserLog));
})
Run Code Online (Sandbox Code Playgroud)

  • 但是这不会从console.log中捕获数据,因为默认情况下chrome设置为WARNING级别,那么如何使用webdriver或浏览器设置为ALL日志级别启动测试? (2认同)
  • @pulkitsinghal我明白了.您需要更改浏览器功能loggingPrefs:{browser:'ALL'}, (2认同)