【问题标题】:view console.log output in angular protractor jasmine test在角量角器茉莉花测试中查看 console.log 输出
【发布时间】:2014-03-31 16:50:22
【问题描述】:

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

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

【问题讨论】:

  • 也许我不明白你的问题,但如果你在规范中设置了 console.log(),你应该在终端中看到它
  • @glepretre - OP 说他有 console.log() 输出,但浏览器关闭得太快,他无法查看。

标签: angularjs jasmine protractor


【解决方案1】:

使用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);
      }
   });
});

【讨论】:

  • 在读取浏览器日志的当前状态时,最好在 afterEach() 或 post-test 块中关闭
  • 在哪里添加该代码块?在规范文件或配置中?更多细节会有所帮助。
  • 这似乎不适用于最新的 protractor v3 和 firefox
  • 这个答案对我来说缺少的部分是我需要在每个github.com/angular/protractor/blob/master/docs/… 的配置文件中添加一个 loggingPrefs 部分,例如能力:{loggingPrefs:{浏览器:“ALL”}},
  • 我把它放在 cucumber 中。在 protractor.conf.ts 中使用功能:{ loggingPrefs: { browser: "ALL" } } 并且它起作用了。
【解决方案2】:

一个普遍的误解是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

希望对你有帮助。

【讨论】:

    【解决方案3】:

    现在可以无需编写任何特殊代码并通过插件来实现:

    【讨论】:

      【解决方案4】:

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

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

      然后在您的规范文件中添加这一行,您希望执行停止:

      browser.debugger();
      

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

      更多信息在这里:https://github.com/angular/protractor/blob/master/docs/debugging.md

      现在,为了获取控制台内容,您可以在 Protractor 常见问题解答中查看如何操作: 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));
      })
      

      【讨论】:

      • 但这并没有从 console.log 捕获数据,因为默认情况下 chrome 设置为 WARNING 级别,那么有人如何使用 webdriver 或将浏览器设置为 ALL 日志记录级别开始测试?
      • @pulkitsinghal 我想通了。您需要更改浏览器功能 loggingPrefs: { browser: 'ALL' },
      【解决方案5】:

      您可能还想更改日志记录级别以查看其他类型的控制台输出。

      查看我对量角器常见问题的建议更新here

      【讨论】:

        【解决方案6】:

        一个简单的选择是使用:

        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 继续测试 - 将出现一个提示,其中包含等待您输入的说明。

        【讨论】:

          【解决方案7】:

          你总是可以在你的测试中覆盖 console.log :)

          logMessages = [];
          
          console.log = function(message) {
              logMessages.push(message);
          }
          

          您也可以使用 $log 代替 console.log 并使用这样的解决方案将一些挂钩放入日志消息中:https://gist.github.com/lrvick/6938531

          【讨论】:

            【解决方案8】:

            如果你

                plugins: [
                    {
                        package: 'protractor-console',
                        logLevels: ['severe'],
                    },
                ],
            

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-10-04
              • 1970-01-01
              • 2017-05-02
              • 1970-01-01
              • 2014-06-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多