2017-07-28 31 views
0

剛剛開始使用量角器進行E2E測試。使用量角器爲每個瀏覽器傳遞參數

我想爲每個鉻硒服務器實例傳遞參數(登錄名和密碼)。 我想用不同的用戶帳戶並行測試相同的spec文件。

這是我conf.js:

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

回答

0

你可以用Protractor's params在命令行上處理這個問題。例如,你可以用這樣一個不同的用戶名/密碼啓動每個測試:

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

然後,在您的測試,你會使用它們像這樣:

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

您還可以設置默認值在你的配置文件中(詳見文檔)。

+0

思滷水爲您重播。但在我的情況下,我想要爲每個創建的實例傳遞參數。我在conf.js'count:10'中使用了attribut屬性。因此,所有chrome實例都將使用user1作爲登錄名,password1作爲密碼。我想例如第一個實例使用Login1和Password1,第二個使用Login2和Password2 .... –

+0

在這種情況下,您的問題沒有足夠的信息。我建議更充實,幷包括你真正想要完成的事情。例如。你想要做負載測試嗎?祝你好運。 – Brine

0

您可以使用量角器的onPrepare-method。如果正在運行多個功能,則每個功能都會運行一次。您可以將數據添加到可在執行期間使用的瀏覽器對象。

你可以做的就是這樣的事情

// 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(); 
 
    }); 
 
});

相關問題