Как ждать выполнения пользовательской функции в транспортире?Реализация нестандартных методов в транспортире - PullRequest
0 голосов
/ 18 февраля 2019

Я написал собственный метод в транспортире, но при его вызове сначала выполняются console.logs, а затем тело функции.Методы не выполняются синхронно.Также журналы после вызова метода выполняются до того, как тело метода заработает.

Может кто-нибудь показать простой пример правильного вызова пользовательских методов?

Мой метод просто возвращает имя добавленного студентачерез пользовательский интерфейс через автоматизацию.Имя студента генерируется случайным образом.

Попытка с использованием .then (), но с ошибкой, тогда не является функцией, затем попытка с отложенным, но не работает

Ответы [ 2 ]

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

Транспортир работает асинхронно и, следовательно, вам нужно работать с обещаниями или async / await.

Так как в версиях узла выше 8, поддерживается асинхронность / ожидание;всегда лучше использовать их, как показано выше в примере Джини.

Другой способ обойти это обещания,

element(by.css('#id')).isPresent()).then(function(){
  console.log('This console will print only after the element is present');
});
0 голосов
/ 18 февраля 2019

Вы можете попробовать использовать async await, https://javascript.info/async-await

Я использую код, как показано ниже.Это может не соответствовать другим стандартам / лучшим практикам, но работает для меня.

public async testInputField(){
    await this.navigateToPage();
    await console.log('Setting username to foo.')
    await this.setInputFieldText(userNameInputBox, 'foo');
    await console.log('pressing apply')
    await this.clickApplyButton();
    await this.verifyInputFieldSet(userNameInputBox);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...