You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:protractor-jasmine2-screenshot-reporter无法生成截图至指定文件夹

排查Protractor截图报告不生成的问题

先看一下你的配置文件,我发现几个可能导致截图不生成的点,咱们一个个来排查:

首先贴出你的配置代码方便参考:

// Protractor configuration file

const { SpecReporter } = require('jasmine-spec-reporter');
var HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter');
var fs = require('fs');

var reporter = new HtmlScreenshotReporter({
  dest: 'target/screenshots',
  filename: 'my-report.html',
  cleanDestination: false,
  showSummary: true,
  showConfiguration: false,
  reportTitle: null,
  ignoreSkippedSpecs: false,
  captureOnlyFailedSpecs: false,
  reportOnlyFailedSpecs: false
});

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './e2e/**/*.e2e-spec.ts'
  ],
  capabilities: {
    'browserName': 'chrome'
  },
  directConnect: false,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  chromeOnly: true,
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js'], // 这里存在重复的specs配置!
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {}
  },
  onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
    jasmine.getEnv().addReporter(reporter);  
  },
  afterLaunch: function(exitCode) {
    return new Promise(function(resolve){
      reporter.afterLaunch(resolve.bind(this, exitCode));
    });
  }
};

1. 重复的specs配置是核心问题

你在exports.config里定义了两次specs属性:

  • 第一次指向你的Angular E2E测试文件./e2e/**/*.e2e-spec.ts
  • 第二次是['spec.js'],这个会直接覆盖前面的配置!

如果你的项目里没有spec.js文件,或者这个文件是空的/没有可执行的测试用例,Protractor相当于没跑任何测试,自然不会生成截图。解决办法:删掉第二个specs: ['spec.js'],保留正确的测试文件路径。

2. 冲突的浏览器连接配置

你同时设置了三个存在冲突的连接相关配置:

  • directConnect: false
  • seleniumAddress: 'http://localhost:4444/wd/hub'
  • chromeOnly: true

其中chromeOnly已经被Protractor废弃,建议直接删掉。另外directConnect和seleniumAddress是互斥的:

  • 如果用directConnect: true,Protractor会直接连接ChromeDriver,不需要额外启动Selenium Server
  • 如果用seleniumAddress,你需要确保Selenium Server已经在http://localhost:4444/wd/hub正常运行

建议简化配置:删掉chromeOnly: true,然后根据你的场景选一种连接方式,比如用directConnect更省心:

directConnect: true,
// 注释或删除下面这行
// seleniumAddress: 'http://localhost:4444/wd/hub',

3. 确认Reporter的初始化状态

可以在onPrepare里加个日志,确认截图Reporter是否被正确加载:

onPrepare() {
  require('ts-node').register({
    project: 'e2e/tsconfig.e2e.json'
  });
  console.log('正在添加截图报告器...');
  jasmine.getEnv().addReporter(reporter);
  console.log('截图报告器添加成功');
}

运行测试时看控制台有没有这两行日志,能快速确认Reporter的加载状态。

4. 检查依赖版本兼容性

如果上面的修改都没用,可能是Protractor和protractor-jasmine2-screenshot-reporter的版本不兼容。比如Protractor 7.x及以上需要搭配最新版本的截图报告器,可以尝试更新依赖:

npm update protractor protractor-jasmine2-screenshot-reporter

5. 确认测试用例正常执行

确保你的./e2e/**/*.e2e-spec.ts里有可执行的测试用例,比如:

describe('Angular App', () => {
  it('应该显示欢迎标题', () => {
    browser.get('/');
    expect(element(by.css('h1')).getText()).toEqual('Welcome');
  });
});

如果测试用例根本没执行,自然不会生成任何截图。

按照上面的步骤修改后,重新运行Protractor,应该就能正常生成截图和报告了。

内容的提问来源于stack exchange,提问作者hondvryer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:14:58