Несколько параметров onPrepare или dynamic login при использовании multiCapabilites

в основном то же самое, что и это: https://stackoverflow.com/questions/25163674/can-you-do-multiple-onprepares-per-browser-instance, но поскольку ответов не было или комментариев, я снова отправлю.

Я хочу войти в систему с двумя профилями пользователей в двух разных браузерах.

Я бы использовал что-то вроде этого в моем файле конфигурации:

multiCapabilities: [{
 browserName: 'chrome',
 specs: ['profile_1.spec.js'],
 login: {email: 'profile_1',
 password: 'pw1'}
}, {
 browserName: 'chrome',
 specs: ['profile_2.spec.js'],
 login: { email: 'profile_2',
 password: 'pw2'}
}]

Поскольку моя страница входа не является angular, мне нужно использовать onPrepare, и я могу установить только параметры входа.

Есть ли способ передать параметры входа из массива multiCapabilities в функцию onPrepare или иметь определенные onPrepares внутри объектов multiCapabilities?

1 ответ

Вы можете обойти это, добавив логику в свой код.

В protractor 1.7 вы можете вызвать browser.getProcessedConfig(), который возвращает вашу конфигурацию.

Вы можете добавить произвольные поля в ваше имя браузера.

multiCapabilities: [{
 browserName: 'chrome',
 specs: ['profile_1.spec.js'],
 name: 'profile1'
}, {
 browserName: 'chrome',
 specs: ['profile_2.spec.js'],
 name: 'profile2'
}]

и используйте параметры:

params: {
 profile1: {
 email: 'CA',
 password: 'pw123'
 },
 profile2: {
 email: 'Sup',
 password: 'pw123'
 }
},

Затем в процессе приготовления:

onPrepare: function() {
 browser.getProcessedConfig().then(function(config) {
 //do something with browser.params[config.capabilities.name]
 });
},

licensed under cc by-sa 3.0 with attribution.