2017-07-28 6 views
0

Gerade mit dem Winkelmesser für E2E Tests gestartet.Pass Parameter für jeden Browser mit Winkelmesser

Ich möchte Parameter (Login und Passwort) für jede Instanz von Chrom Selen-Server übergeben. Ich möchte die gleiche Spezifikationsdatei mit verschiedenen Benutzerkonten parallel testen.

Das ist mein conf.js:

capabilities: { 
     'browserName': 'chrome', 
     'chromeOptions': { 
      'args': ['--disable-web-security'] 
     }, 
     count: 10 
    }, 

Antwort

0

du mit Protractor's params auf der Kommandozeile verarbeiten kann. Zum Beispiel können Sie jeden Test mit einem anderen Benutzernamen/Passwort wie folgt beginnen:

protractor conf.js --params.username user1 --params.password password1 

Dann in Ihrem Test, würden Sie sie so etwas wie folgt verwenden:

logIntoMyApp(browser.params.username, browser.params.password); 

können Sie auch festlegen Standardwerte in Ihrer Konfigurationsdatei (Details finden Sie in der Dokumentation).

+0

Brine für Ihre Replay Thinks. aber in meinem Fall, ich möchte pass params für jede Instanz erstellt werden. Ich habe in meinem conf.js count: 10 'count attribut verwendet. Für alle chrome Instanzen wird user1 als Login und password1 als Passwort verwendet. Ich möchte zum Beispiel die erste Instanz verwenden Login1 und Password1, und die zweite Verwendung Login2 und Password2 .... –

+0

In diesem Fall hat Ihre Frage nicht genügend Informationen. Ich schlage vor, es mehr auszuarbeiten und einzuschließen, was Sie wirklich erreichen wollen. Z.B. Versuchen Sie, Lasttests durchzuführen? Viel Glück. – Brine

0

Sie können die onPrepare-method von Winkelmesser dafür verwenden. Wenn mehrere Funktionen ausgeführt werden, wird dies einmal pro Funktion ausgeführt. Sie können dem Browser-Objekt Daten hinzufügen, die Sie während der Ausführung verwenden können.

Was Sie tun können, ist so etwas wie dieses

// A JSON file or something 
 
var login = { 
 
    "chrome": { 
 
    "user": "usernameChrome", 
 
    "pass": "passwordChrome" 
 
    }, 
 
    "firefox": { 
 
    "user": "usernameFirefox", 
 
    "pass": "passwordFirefox" 
 
    } 
 
}; 
 

 

 
// in your config 
 
// An example configuration file. 
 
exports.config = { 
 
    directConnect: true, 
 

 
    // Capabilities to be passed to the webdriver instance. 
 
    multiCapabilities: [{ 
 
     'browserName': 'chrome' 
 
    }, 
 
    { 
 
     'browserName': 'firefox' 
 
    } 
 
    ], 
 

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

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

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

 
    onPrepare: function() { 
 
    return browser.getCapabilities() 
 
     .then((capabilities) => { 
 
     // Get the current browser you are using 
 
     browser.browserName = capabilities.get('browserName').toLowerCase(); 
 
     // Add the user and pass to the browser-object 
 
     browser.user = login[browser.browserName].user; 
 
     browser.pass = login[browser.browserName] pass; 
 
     }); 
 
    } 
 
}; 
 

 
// In your spec 
 
describe('logon', function() { 
 
    it('should logon', function() { 
 
    browser.get('http://www.example.com'); 
 

 
    element(by.model('user')).sendKeys(browser.user); 
 
    element(by.model('pass')).sendKeys(browser.pass); 
 
    element(by.tagName('button')).click(); 
 
    }); 
 
});