【问题标题】:How to take screenshot in protractor on failure of test cases如何在量角器中截取测试用例失败的屏幕截图
【发布时间】:2016-07-12 05:58:14
【问题描述】:

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

你能帮我建议我应该怎么做吗?

谢谢你:)

【问题讨论】:

    标签: javascript node.js testing protractor


    【解决方案1】:

    您可以为此使用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

    【讨论】:

      【解决方案2】:

      下面的代码可以放在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.');
            });
      
          });
        }
      });
      }
      

      希望对你有帮助! :)

      Reference link

      同样,如果您希望它仅在失败时截取屏幕截图,您可以将 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;
              });
            });
          }
        }
      });
      

      【讨论】:

        【解决方案3】:

        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() {
              jasmine.getEnv().addReporter(new HtmlReporter({
                 baseDirectory: 'target/screenshots',
                 takeScreenShotsOnlyForFailedSpecs: true
              }).getJasmine2Reporter());
           }
        }
        

        【讨论】:

        • 哇,这太棒了,谢谢你的建议 :)
        【解决方案4】:

        如果您在 protractor.conf.js 中使用 framework: 'custom',那么使用 Jasmine 或 Jasmine 报告器似乎不起作用。

        你可以在你的 post-test hook 中做如下的事情(例如 cucumber.After):

        
          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.');
            });
          });
        

        【讨论】:

        猜你喜欢
        • 2018-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 2019-06-18
        • 2012-09-07
        相关资源
        最近更新 更多