如何在测试用例失败时在量角器中截取屏幕截图

时间:2016-07-12 05:58:14

标签: javascript node.js testing protractor

我是量角器的新手,想在浏览器中截取我失败的测试用例的截图。

你能告诉我该如何解决这个问题,请你帮帮我吗?

谢谢:)

4 个答案:

答案 0 :(得分:10)

您可以使用protractor-jasmine2-screenshot-reporter模块,它有一些很好的功能可以满足您的需要。

 var HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter');

 var reporter = new HtmlScreenshotReporter({
 dest: 'target/screenshots',
 filename: 'my-report.html',
 captureOnlyFailedSpecs: true
});

这将捕获您的规格失败后的屏幕截图,您还有更多选项,您可以查看此链接:https://www.npmjs.com/package/protractor-jasmine2-screenshot-reporter

答案 1 :(得分:3)

请看一下这段代码。在这段代码中,我们正在与jasmine记者正确地注册截图功能。它对我有用。

onPrepare: function() {
jasmine.getEnv().addReporter({
  specDone: function(result) {
    browser.takeScreenshot().then(function(screenShot) {

      //    Saving File.
      //    Param filePath : where you want to store screenShot
      //    Param screenShot : Screen shot file which you want to store. 

      fs.writeFile(filePath, screenShot, 'base64', function (err) {
      if (err) throw err;
      console.log('File saved.');
      });

    });
  }
});
}

我希望它有所帮助! :)

Reference link

答案 2 :(得分:1)

如果您在protractor.conf.js中使用framework: 'custom',则使用Jasmine或Jasmine报告程序似乎无效。

您可以在测试后挂钩中执行以下操作(例如,黄瓜。之后):


  protractor.browser.takeScreenshot().then(function(screenshot) {
    const screenshots = path.join(process.cwd(), 'e2e/reports/screenshots');

    fs.writeFile(screenshots + '/test.png', screenshot, 'base64', function (err) {
      if (err) {
          throw err;
      }
      console.log('File saved.');
    });
  });

答案 3 :(得分:0)

protractor-beautiful-reporter能够构建漂亮的html报告,包括屏幕截图。

安装:

npm install protractor-beautiful-reporter --save-dev

protractor.conf.js中的配置:

const HtmlReporter = require('protractor-beautiful-reporter');

exports.config = {
   // your config here ...

   onPrepare: function() {
      // Add a screenshot reporter and store screenshots to `/tmp/screenshots`:
      jasmine.getEnv().addReporter(new HtmlReporter({
         baseDirectory: 'target/screenshots',
         takeScreenShotsOnlyForFailedSpecs: true
      }).getJasmine2Reporter());
   }
}