#protractor
#транспортир
Вопрос:
Для закрытия текущей вкладки в моем тесте я использую следующую функцию:
browser.getAllWindowHandles().then((handles) => {
browser.driver.switchTo().window(handles[1]);
browser.driver.close();
browser.driver.switchTo().window(handles[0]);
});
И это хорошо работает. Но я должен переписать на «async / await» вместо «.then». Я пробую следующий код:
async function goBackToPreviousTab () {
let handles = await browser.getAllWindowHandles();
browser.driver.switchTo().window(handles[1]);
browser.driver.close();
browser.driver.switchTo().window(handles[0]);
}
но в результате получаю следующую ошибку:
нет такого окна: целевое окно уже закрыто из-за неизвестной ошибки: веб-просмотр не найден
Ответ №1:
Прежде всего, поймите, что .then
или await
— это способ решения Обещаний. Поэтому все, что возвращает обещание, должно быть явно разрешено. Например, .close() также возвращает обещание и нуждается в любом из синтаксисов
Вот почему, возвращаясь к вашему вопросу, ваша функция должна быть
async function goBackToPreviousTab () {
let handles = await browser.getAllWindowHandles();
await browser.driver.switchTo().window(handles[1]);
await browser.driver.close();
await browser.driver.switchTo().window(handles[0]);
}
потому что каждая из твоих заповедей — это Обещание