Protractor 量角器;胡克后的黄瓜不';I don’我没有按预期工作

Protractor 量角器;胡克后的黄瓜不';I don’我没有按预期工作,protractor,cucumberjs,Protractor,Cucumberjs,出于某种原因,我在cucumberjs中编写了一个基本的after hook,它不能按预期工作。当场景失败时,它应该附加屏幕截图并编写浏览器控制台日志。但它在html报告中的功能之后附加了屏幕截图,并在第二个场景之间打印浏览器控制台日志。有什么问题吗 this.After(function(scenario, callback) { if (scenario.isFailed()) { global.browser.takeScre

出于某种原因,我在cucumberjs中编写了一个基本的after hook,它不能按预期工作。当场景失败时,它应该附加屏幕截图并编写浏览器控制台日志。但它在html报告中的功能之后附加了屏幕截图,并在第二个场景之间打印浏览器控制台日志。有什么问题吗

     this.After(function(scenario, callback) {       
        if (scenario.isFailed()) {
            global.browser.takeScreenshot().then(function(base64png) {
            var decodedImage = new Buffer(base64png,'base64').toString('binary');
            scenario.attach(decodedImage, 'image/png');
       });
        global.browser.manage().logs().get('browser').then(function (browserlog){         
        browserlog.forEach(function (log) {
          if (log.level.value > 900) {
             console.error(log.message.substring(log.message.indexOf('Error'),log.message.indexOf('\n')))
           }
         })           
        });
        callback();
    } else {
        callback();
    }

});

根据cucumberjs github页面

可以使用stream.Readable附加图像和其他二进制数据。在这种情况下,必须向attach()传递回调:

您可以将单个after挂钩拆分为两个单独的挂钩:

this.After(function(scenario, next) {
  browser.takeScreenshot().then(function(png) {
    var decodedImage = new Buffer(png, 'base64').toString('binary');
    scenario.attach(decodedImage, 'image/png', next);
  }, function(err) {
    next(err);
  });
});

this.After(function(scenario, next) {
  global.browser.manage().logs().get('browser').then(function (browserlog){
    browserlog.forEach(function (log) {
      if (log.level.value > 900) {
        console.error(log.message.substring(log.message.indexOf('Error'),log.message.indexOf('\n')))
      }
    });
  });
});

根据cucumberjs github页面

可以使用stream.Readable附加图像和其他二进制数据。在这种情况下,必须向attach()传递回调:

您可以将单个after挂钩拆分为两个单独的挂钩:

this.After(function(scenario, next) {
  browser.takeScreenshot().then(function(png) {
    var decodedImage = new Buffer(png, 'base64').toString('binary');
    scenario.attach(decodedImage, 'image/png', next);
  }, function(err) {
    next(err);
  });
});

this.After(function(scenario, next) {
  global.browser.manage().logs().get('browser').then(function (browserlog){
    browserlog.forEach(function (log) {
      if (log.level.value > 900) {
        console.error(log.message.substring(log.message.indexOf('Error'),log.message.indexOf('\n')))
      }
    });
  });
});