невозможно переопределить аргументы командной строки в Angularjs Protractor при запуске пакетов с gulp

Я могу установить параметры в файле 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

Может ли кто-нибудь помочь здесь. Я хочу понять, где я делаю ошибку при передаче аргумента командной строки.


person tyaga001    schedule 21.01.2017    source источник
comment
Я думаю, что это сработало бы, если бы вы не использовали gulp, поскольку вы используете gulp, вам нужно использовать argv для обработки этих аргументов командной строки и передачи их в вашу задачу транспортира.   -  person sonhu    schedule 22.01.2017
comment
Это я уже обработал через yargs. вот так выглядит мой файл глотка. пожалуйста, посмотрите и дайте мне знать, если я что-то не так делаю.   -  person tyaga001    schedule 23.01.2017
comment
вар глоток = требуется ('глоток'); var gulpProtractor = require('gulp-angular-protractor'); var args = требуют('yargs').argv; gulp.task('e2e-test',['transpile'], function(callback) { gulp.src(paths.tests) .pipe((gulpProtractor({ configFile: 'protractor.conf.js', args: [ ' --suite', args.suite ], })).on('ошибка', function(e) { console.log(e); }).on('конец', обратный вызов)); });   -  person tyaga001    schedule 23.01.2017
comment
Похоже, что включенные вами paths.tests являются проблемой, если вы замените их на gulp.src([]), возможно, это сработает. См. stackoverflow. ком/вопросы/38436507/   -  person sonhu    schedule 23.01.2017
comment
Я могу перезаписать то же самое, но мне нужно удалить yargs, так как это главное, что не поддерживает параметры, которые я сделал таким образом.   -  person tyaga001    schedule 23.01.2017
comment
переменные параметры = process.argv; var args = process.argv.slice(3);   -  person tyaga001    schedule 23.01.2017


Ответы (2)


Попробуйте передать значения в кавычках

--params.Login.username="abc"
person Vishal Aggarwal    schedule 22.01.2017
comment
Пробовал также с двойными и одинарными кавычками, но он не перезаписывался. - person tyaga001; 23.01.2017

Попробуй это

--params.Login.username "abc"

Это описано в документации Protractor.

person Batajus    schedule 28.01.2017