Нет async/await
- это не то же самое, что browser.wait
.
Async / await - это стиль обработки обещаний в javascript.Все взаимодействия браузера (и многие другие функции) в среде транспортира заключены в закулисные обещания.Это связано с тем, что webdriverJS, на который опирается Protractor, является полностью асинхронным.Protractor использует обещания, позволяющие выполнять код в той последовательности, в которой он написан проще.
Первоначально webdriverJS предоставлял функцию, называемую потоком управления, которая позволяла обрабатывать все эти обещания за кулисами.Начиная с версии 4 webdriverJS (я считаю) это устарело, и из транспортира версии 6.0+ транспортир теперь использует webdriverJS 4, так что поток управления также не рекомендуется использовать внутри транспортира.Async/await
- это более простой и гораздо более простой способ справиться с этими обещаниями.
Внутри транспортира async/await
может использоваться как альтернатива .then.catch()
.Так что для вашего примера вы должны просто написать вместо этого:
async function (msg) {
let conversationMsgs = await main.getMessagesFromConversation()
expect(conversationMsgs).to.equal(msg));
}
browser.wait - это команда, которая приостанавливает выполнение до тех пор, пока не будет решено конкретное обещание или условие илидостигает периода ожиданияОбычно он используется для ожидания появления элементов на странице, но может иметь и много других применений.