Javascript 在conf.js的插件配置中使用量角器参数值

Javascript 在conf.js的插件配置中使用量角器参数值,javascript,node.js,protractor,report,Javascript,Node.js,Protractor,Report,我想让我的量角器屏幕快照插件创建以规范名为目录名的报告目录。运行量角器时,规范名称将作为参数传递: 量角器——规格my_spec.jsconf.js 调用上述命令后,我希望在目录my_spec.js(或my_spec)中运行测试并创建报告。 插件的配置包含在conf.js中: plugins: [{ package: 'protractor-screenshoter-plugin', screenshotOnExpect: 'failure+success', scree

我想让我的量角器屏幕快照插件创建以规范名为目录名的报告目录。运行量角器时,规范名称将作为参数传递:
量角器——规格my_spec.jsconf.js

调用上述命令后,我希望在目录my_spec.js(或my_spec)中运行测试并创建报告。
插件的配置包含在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中访问量角器的'--specs'参数值?

您可以使用
process.argv
访问触发量角器时传递的所有CLI参数,它将为您提供一个包含所有参数的数组

请参阅下面的Nodejs文档摘录

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

当执行
量角器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' ]
然后构建逻辑以提取所需的价值。在这种特定情况下,要获取
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
}]
函数getSpecsFromCLIArg(){ 对于(i=0;i您能试试下面的建议吗?如果行得通,请告诉我!您的解决方案很好,尽管我认为框架提供了一些更容易获得该值的方法。无论如何,谢谢你!删除字符串中的“.js”非常重要-否则会发生错误(这很明显-文件名和目录名不能相同)。是的,我懒得添加逻辑来删除.js:)无论如何都批准了您的编辑。谢谢您可以使用量角器插件中的
browser.params
访问命令行参数