Я пытаюсь адаптировать существующий пакет Selenium, чтобы иметь возможность проверить наличие ожидаемых элементов страницы в нашем производстве. В то время как я могу эмулировать процесс входа в систему для локального и промежуточного доступа, в производстве используется система MFA для аутентификации пользователей.
Я бы хотел, чтобы Selenium автоматизировал вход в систему, подождите, пока я введу код MFA, а затем достигните определенной страницы (destinationUrl
), чтобы возобновить набор средств автоматизации.
В приведенном ниже коде URL входа в систему может принимать параметр перенаправления, который сразу же перенаправит пользователя на нужную страницу после обработки входа в систему. Он отлично работает как на локальном, так и на промежуточном уровне, но при работе он перестает смотреть URL-адрес сеанса веб-драйвера даже после того, как он был перенаправлен на нужный URL.
loginAndNavigateTo(destinationPath) {
var chainedUrl = `${this.loginUrl}&location=/admin/dashboard${destinationPath}`
var destinationUrl = `${this.baseUrl}${destinationPath}`
return new Promise((resolve, reject) => {
this.browser
.get(chainedUrl)
.then(this.type(this.userInputID, this.username))
.then(this.type(this.passInputID, this.password))
.then(this.type(this.passInputID, Key.RETURN))
.then(async () => {
await this.browser
.wait(until.urlIs(destinationUrl))
.then(() => resolve())
this.currentUrl = destinationUrl
done()
})
.catch((err) => {
reject(err)
})
})
}