【问题标题】:unable to override command line arguments in Angularjs Protractor while running suites with gulp使用 gulp 运行套件时无法覆盖 Angularjs Protractor 中的命令行参数
【发布时间】:2017-01-21 09:12:12
【问题描述】:

我可以在 conf 文件中设置参数。但是当我运行并尝试在运行时覆盖它时它不起作用。它使用我在 conf 文件中提到的用户名登录。

我的配置文件-

var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
var log4js = require('log4js');
exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  allScriptsTimeout: 10*60*1000,
  framework: 'jasmine2',

  onPrepare: function () 

    browser.manage().timeouts().implicitlyWait(11000);
    var width = 768;
    var height = 1366;
    browser.driver.manage().window().setSize(768, 1366);
    //browser.ignoreSynchronization = true

    jasmine.getEnv().addReporter(
      new Jasmine2HtmlReporter({
        savePath: __dirname+'/qualityreports/testresults/e2e',
        takeScreenshots: false,
        filePrefix: 'automationReport',
        consolidate: true,
        cleanDestination: false,
        consolidateAll: true

      })
    );
  },

  suites:{
    suiteone:['./test/e2e/login/**/*Spec.js',
      './test/e2e/main/**/mainSpec.js']
  },
  capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
      'args': []
    }
  },

  appenders: [
    {
      "type": "file",
      "filename": "./e2eTestLogs/logfile.log",
      "maxLogSize": 20480,
      "backups": 3,
      "category": "relative-logger"
    }
  ],

  resultJsonOutputFile:'./results.txt',

  params: {
    Login: {
      username: 'xyz',
      password: 'xyz'
    }
  },

  // Options to be passed to Jasmine-node.
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 40*60*1000
  }
};

我使用的命令:

gulp e2e-test --suite suiteone --params.Login.username=abc --params.Login.password=abc

有人可以在这里帮忙吗?我想了解在传递命令行参数时我在哪里做错了。

【问题讨论】:

  • 我认为如果你不使用 gulp 这会起作用,因为你正在使用 gulp 你需要使用 argv 来处理这些命令行参数并将它们传递给你的量角器任务。
  • 这个我已经通过 yargs 处理了。这是我的 gulp 文件的样子。请看一下,如果我做错了什么,请告诉我。
  • var gulp = require('gulp'); var gulpProtractor = require('gulp-angular-protractor'); var args = require('yargs').argv; gulp.task('e2e-test',['transpile'], function(callback) { gulp.src(paths.tests) .pipe((gulpProtractor({ configFile: 'protractor.conf.js', args: [ ' --suite', args.suite ], })).on('error', function(e) { console.log(e); }).on('end', callback)); });跨度>
  • 看起来你包含的 paths.tests 是问题,如果你用 gulp.src([]) 替换它也许它会起作用。见stackoverflow.com/questions/38436507/…
  • 我可以覆盖相同的内容,但我需要删除 yargs,因为这是不支持我这样做的参数的主要内容。

标签: angularjs protractor e2e-testing gulp-protractor


【解决方案1】:

尝试在引号中传递值

--params.Login.username="abc"

【讨论】:

  • 也尝试了双引号和单引号,但同样没有覆盖。
【解决方案2】:

试试这个

--params.Login.username "abc"

在 Protractor 的documentation 中有描述。

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多