как принять ввод в реальном времени от пользователя - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь автоматизировать тестирование моего приложения с помощью транспортира.При входе в приложение у меня есть шаг, на котором мне нужно ввести пароль, полученный на моем мобильном телефоне.Я пытаюсь использовать команду «подсказки» javascript для получения пароля от тестера в режиме реального времени.Но я получаю сообщение об ошибке

"ReferenceError: приглашение не определено".

Как мне решить эту проблему?

Есть ли другие способыкоторый может принимать пользовательский ввод в реальном времени от тестера.

Используется:

prompt('Enter the passcode from your mobile', '')

1 Ответ

0 голосов
/ 17 февраля 2019

Мне удалось получить версию функциональности, с которой вы работаете, в подходах async / await и обещания менеджера.

Вариант 1 - получение значения из приглашения браузера (async / await)

  let getValueFromUserViaPrompt = async() => {
      await browser.executeScript("window.promptPasscode=prompt('Please enter your passcode','default')");
      //verify that the prompt is displayed
      await browser.wait(EC.alertIsPresent(), 3000, 'alert is not present');

      await browser.wait(async () => {
          try {
              //if alert is still present on page then return false so main browser.wait will check again.
              await browser.wait(EC.alertIsPresent(), 500);
              return false;
          } catch (err) {
              return true;
          }
      }, 30 * 1000, 'Alert has not been closed');

      //return the prompt value
      return await browser.executeScript("return window.promptPasscode");
  }

  console.log(await getValueFromUserViaPrompt());

Добавлена ​​альтернатива с использованием диспетчера обещаний На основании вашего комментария я вижу, что вы используете диспетчер обещаний, поэтому я включил ответ и для этого подхода.Однако я настоятельно рекомендую перейти к асинхронному / ожидающему подходу для вашей среды.

    let getValueFromUserViaPrompt = () => {
        browser.executeScript("window.promptPasscode=prompt('Please enter your passcode','default')");
        //verify that the prompt is displayed
        browser.wait(EC.alertIsPresent(), 3000, 'alert is not present');

        browser.wait(() => {
            //if alert is still present on page then return false so main browser.wait will check again.
            return browser.wait(EC.alertIsPresent(), 500)
                .then(() => false)
                .catch(() => true);
        }, 30 * 1000, 'Alert has not been closed');

        //return the prompt value
        return browser.executeScript("return window.promptPasscode");
    }

    getValueFromUserViaPrompt().then(res => {
        console.log(res);
    })
...