Как я могу использовать различные параметры в тесте множественных возможностей транспортира? - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь запустить несколько тестов возможностей, и каждый браузер использует разные логины, но я получаю эту ошибку:

Ошибка: не удается прочитать свойство 'username' из неопределенного

SPE C ФАЙЛ:

loginPage.pegarInput('username',browser.params[0].username),
loginPage.pegarInput('password',browser.params[0].password)`

КОНФИГ. JS ФАЙЛ:

multiCapabilities: [{

    browserName: 'chrome',
      params: {
        username:'username',
        password:'password'
      },
    chromeOptions: {
      args: [ "--headless", "--disable-gpu","--no-sandbox"]
     }
    },

    {
      browserName: 'safari',
        params: {
          username:'username',
          password:'password'
        }
      }],

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Вы можете попробовать browser.getProcessedConfig(), как показано ниже:

return browser.getProcessedConfig().then(function(config) {
  // config.capabilities is the CURRENT capability being run, if
  // you are using multiCapabilities.
  console.log('Executing capability', config.capabilities);
  loginPage.pegarInput('username', config.params.username)
});

// when use await/async
config = await browser.getProcessedConfig()
loginPage.pegarInput('username', config.params.username)
0 голосов
/ 02 апреля 2020

Я бы, наверное, воспользовался этим подходом, но есть разные способы добиться того, чего вы хотите. Этот подход имеет один объект params в конфигурации со всеми учетными данными. Затем в onPrepare выясняется, какой браузер запущен (для каждой возможности запускается отдельный onPrepare), и сохраняет это browserName в качестве глобальной переменной. Чтобы использовать учетные данные для входа, вы используете квадратную скобку для доступа к указанному c имени браузера с использованием новой глобальной переменной.

exports.config = {
    params: {
        chrome: {
           username: 'chromeUsername',
           password: 'chromePassword'
        },
        firefox: {
           username: 'firefoxUsername',
           password: 'firefoxPassword'
        }
    },
    multiCapabilities:{
      ...
    },
    onPrepare: async () => {
       const capabilities = await browser.getCapabilities();
       global.currentBrowser = capabilities.map_.get('browserName');

    }
    ...
}

Использование

loginPage.pegarInput('username',browser.params[currentBrowser].username)
...