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

Jat*_*tin 8 javascript testing node.js protractor

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

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

谢谢 :)

Ram*_*ala 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
});
Run Code Online (Sandbox Code Playgroud)

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


A Q*_*shi 5

下面的代码可以放在protractor.conf.js的exports.config 块中:

const fs = require('fs');
. . . 
exports.config = {
. . . 
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.');
      });

    });
  }
});
}
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助!:)

参考链接

类似地,如果您希望它只在失败时截取屏幕截图,您可以将调用 takeScreenshot 放在匹配 result.failedExpectations.length 大于 0 的条件中:

jasmine.getEnv().addReporter({
  specDone: (result) => {
    if(result.failedExpectations.length > 0) {
      browser.takeScreenshot().then((screenShot) => {
        fs.writeFile('./protractorFailure.png', screenShot, 'base64', (err) => {
          if (err) throw err;
        });
      });
    }
  }
});
Run Code Online (Sandbox Code Playgroud)