2014-11-15 11 views
14

की बेसउआरएल प्रॉपर्टी को पैरामीटर कैसे करूं, मुझे कॉन्फ़िगरेशन फ़ाइलों में अलग-अलग baseUrl एस के साथ विभिन्न संदर्भों में अपने प्रोटैक्टर परीक्षण चलाने की आवश्यकता है। मैं प्रत्येक परिस्थिति के लिए अलग कॉन्फ़िगरेशन फ़ाइलों का उपयोग नहीं करना चाहता क्योंकि यह बनाए रखना अधिक कठिन है। इसके बजाय, मैं बेस यूआरएल को कमांड लाइन पैरामीटर के रूप में पास करना चाहता हूं।मैं प्रोटैक्टर कॉन्फ़िगरेशन फ़ाइल

protractor.conf.js:: यहाँ क्या मैं अब तक की कोशिश की है है

exports.config = { 
    onPrepare : { 
    ... 
    exports.config.baseUrl = browser.params.baseUrl; 
    ... 
    } 
} 

और आह्वान करने के लिए चांदा:

protractor protractor.conf.js --params.baseUrl 'http://some.server.com' 

इस के बाद से यह browser उदाहरण की तरह लगता है काम नहीं करता है onPrepare से पहले ही कॉन्फ़िगर किया गया है।

इसी तरह, मैं इस कोशिश की है:

exports.config = { 
    baseUrl : browser.params.baseUrl 
} 

लेकिन यह या तो काम नहीं करता है जब config बनाई जा रही है, क्योंकि यह ब्राउज़र उदाहरण की तरह लगता है उपलब्ध नहीं है।

ऐसा लगता है कि मैं सभी कमांड लाइन तर्कों तक पहुंचने के लिए मानक नोड process.argv का उपयोग कर सकता हूं, लेकिन ऐसा लगता है कि यह प्रोटैक्टर की भावना के खिलाफ जा रहा है।

मुझे ऐसा करने का सबसे अच्छा तरीका क्या है जो मुझे करने की ज़रूरत है?

उत्तर

22

ऐसा लगता है कि यह पहले से ही संभव है, लेकिन दस्तावेज इस क्षेत्र में स्पॉटी है। Looking at the code, हालांकि, प्रोटैक्टर कई प्रतीत होता है अनियंत्रित कमांड लाइन तर्कों का समर्थन करता है।

तो, कुछ इस तरह से चल रहा है काम करेगा:

protractor --baseUrl='http://some.server.com' my.conf.js 
+0

साझा करने के लिए धन्यवाद। यदि आपको यह प्रासंगिक लगता है तो आपको उन्हें दस्तावेज़ों में जोड़ने का पुल अनुरोध करना चाहिए। – glepretre

+0

हां, मैं उस पर विचार करूंगा। –

+0

किसी और के लिए यदि आपको ओपी के रूप में 'ऑनपेरेयर' ब्लॉक में इसे एक्सेस करने की आवश्यकता है, तो निम्न कोड https://github.com/angular/protractor/blob/1.7.0/docs/referenceConf के माध्यम से ऐसा कर सकते हैं। जेएस # एल 1 9 5-एल 208 और config.baseUrl का उपयोग करें। – cerd

1

अन्य विकल्प gruntfile.js उपयोग करें और यह चांदा कॉन्फ़िग फ़ाइल फोन है।

//gruntfile.js

module.exports = function (grunt) { 
    grunt.registerTask("default", "", function() { 
    }); 

    //Configure main project settings 
    grunt.initConfig({ 
     //Basic settings and infor about our plugins 
     pkg: grunt.file.readJSON('package.json'), 

     //Name of plugin 
     cssmin: { 
     }, 

     protractor: { 
      options: { 
       configFile: "conf.js", // Default config file 
       keepAlive: true, // If false, the grunt process stops when the test fails. 
       noColor: false, // If true, protractor will not use colors in its output. 
       args: { 
        baseUrl: grunt.option('baseUrl') || 'http://localhost:6034/' 
       } 
      }, 
      your_target: { // Grunt requires at least one target to run so you can simply put 'all: {}' here too. 
       options: { 
        configFile: "conf.js", // Target-specific config file 
        args: { 
         baseUrl: grunt.option('baseUrl') || 'http://localhost:63634/' 
        } 
       } 
      }, 
     }, 

     //uglify 
     uglify: { 
     } 
    }); 

    //Load the plugin 
    grunt.loadNpmTasks('grunt-contrib-cssmin'); 
    grunt.loadNpmTasks('grunt-contrib-uglify'); 
    grunt.loadNpmTasks('grunt-protractor-runner'); 

    //Do the Task 
    grunt.registerTask('default', ['cssmin']); 
}; 

कोणमापक कॉन्फ़िग फ़ाइल: conf.js

exports.config = { 
    directConnect: true, 

    // Capabilities to be passed to the webdriver instance. 
    capabilities: { 
     'browserName': 'chrome', 
     'chromeOptions': { 
      args: ['--no-sandbox'] 
     } 
    }, 

    chromeOnly: true, 

    // Framework to use. Jasmine is recommended. 
    framework: 'jasmine', 

    // Spec patterns are relative to the current working directory when 
    // protractor is called. 
    specs: ['specs/*/*_spec.js'], 

    suites : { 
     abcIdentity : 'specs/abcIdentity/*_spec.js' //picks up all the _spec.js files 
    }, 

    params: { 
     UserName: '[email protected]', 
     Password: '123' 
    }, 

    // Options to be passed to Jasmine. 
    jasmineNodeOpts: { 
     defaultTimeoutInterval: 30000, 
     includeStackTrace: true 
    }, 

    onPrepare: function() { 
     browser.driver.manage().window().maximize(); 
     if (process.env.TEAMCITY_VERSION) { 
      var jasmineReporters = require('jasmine-reporters'); 
      jasmine.getEnv().addReporter(new jasmineReporters.TeamCityReporter()); 
     } 
    } 
}; 

// डिफ़ॉल्ट यूआरएल के साथ चलाने के लिए http://localhost:6034

grunt protractor 

// चलाने के लिए किसी भी अन्य यूआरएल

के साथ 0
grunt protractor --baseUrl:"http://dev.abc.com/" 
संबंधित मुद्दे