在conf.js的插件configuration中使用Protractor参数值

我想我的protractor-screenshoter-plugin创build报告目录与spec名称作为目录名称。 运行“量angular器”时,要将Spec名称作为parameter passing:
量angular器–specs my_spec.js conf.js

在调用上述命令之后,我想让我的testing运行,并在目录my_spec.js (或my_spec)中创build报告。
插件的configuration包含在conf.js中

plugins: [{ package: 'protractor-screenshoter-plugin', screenshotOnExpect: 'failure+success', screenshotOnSpec: 'failure', withLogs: false, htmlReport: true, screenshotPath: '',//I would like to put the --specs parameter value here writeReportFreq: 'end', clearFoldersBeforeTest: true }] 

任何想法如何做到这一点? 如何在conf.js中访问量angular器的'–specs'参数值?

你可以访问使用process.argv触发Protractor时传递的所有CLI参数,它将给你一个包含所有参数的数组

请参阅以下关于process.argv的Nodejs文档的摘录

process.argv属性返回一个数组,其中包含启动Node.js进程时传递的命令行参数。 第一个元素是process.execPath。 如果需要访问argv [0]的原始值,请参阅process.argv0。 第二个元素将成为正在执行的JavaScript文件的path。 其余的元素将是任何额外的命令行参数。

当你执行protractor conf.js --spec demo2.js

conf.js的语句console.log(process.argv)将输出如下所示的内容

 [ 'C:\\Program Files\\nodejs\\node.exe', 'C:\\Users\\aditya\\AppData\\Roaming\\npm\\node_modules\\protractor\\bin\\protractor', 'conf.js', '--specs', 'demo2.js' ] 

然后build立你的逻辑来提取你需要的价值。 在这个特定的情况下,为了得到specs值(没有扩展名,所以文件名冲突不会发生),下面的函数将有所帮助

 function getSpecsFromCLIArg() { for (i = 0; i < process.argv.length; i++) { if (process.argv[i] === '--specs') { var specFile = process.argv[i + 1]; return specFile.substr(0, specFile.indexOf('.')); } } } console.log(getSpecsFromCLIArg()) plugins: [{ package: 'protractor-screenshoter-plugin', screenshotOnExpect: 'failure+success', screenshotOnSpec: 'failure', withLogs: false, htmlReport: true, screenshotPath: getSpecsFromCLIArg(), writeReportFreq: 'end', clearFoldersBeforeTest: true }]