【问题标题】:Using Protractor parameter value in plugin config in conf.js在 conf.js 的插件配置中使用量角器参数值
【发布时间】:2016-12-23 13:44:39
【问题描述】:

我希望我的 protractor-screenshoter-plugin 以规范名称作为目录名称创建报告目录。运行 Protractor 时,规格名称将作为参数传递:
protractor --specs my_spec.js conf.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中访问Protractor的'--specs'参数值?

【问题讨论】:

  • 你可以试试下面的建议,如果可行,请告诉我!

标签: javascript node.js protractor report


【解决方案1】:

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

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

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

当你执行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' ]

然后构建您的逻辑以提取您需要的值。在这种特定情况下,要获取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
}]

【讨论】:

  • 你的分辨率很好,虽然我认为也许框架提供了一些更简单的方法来获得这个价值。无论如何,谢谢!
  • 删除字符串中的 '.js' 很重要 - 否则会发生错误(这很明显 - 文件名和目录名不能相同)。
  • 是的,懒得添加逻辑来剥离 .js :) 无论如何批准你的编辑。谢谢!
  • 您可以在量角器插件中使用browser.params 访问命令行参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 2014-11-10
  • 2022-12-17
  • 1970-01-01
  • 2020-04-02
  • 2015-05-30
相关资源
最近更新 更多