Можно ли чередовать ручные действия в Selenium Automation Suite (например, для входа в систему MFA)? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь адаптировать существующий пакет 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)
                })
        })
    }
...