Мне удалось получить версию функциональности, с которой вы работаете, в подходах 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);
})