Сообщения console.log появляются перед выполнением актуальной задачи

Я использовал console.log, чтобы написать несколько подробных сообщений о текущей задаче / ожидаемой выполнению транспортиром, но я обнаружил, что на консоли эти сообщения появляются до того, как фактическая задача будет выполнена в браузере. Делать так -

it('should validate all labels', function() {
    ....
    element.sendKey('name');
    console.log('name entered to user input');
    ...
});

Сообщение журнала консоли появляется еще до загрузки страницы в браузере. Так как это исправить?

2 ответа

Это потому, что Protractor пытается запустить все, что может, так как он работает на асинхронном принципале. Если вы хотите что-то для console.log после завершения спецификации, попробуйте подождать, пока обещание предыдущего шага не будет разрешено в спецификации. Вот как -

it('should validate all labels', function() {
    ....
    element.sendKeys('name').then(function(){
        console.log('name entered to user input');
    });
    ...
});

Выше кода консоль записывает ваше заявление после отправки данных в элемент. Подробнее об обещаниях транспортира. Надеюсь это поможет.

Я согласен с ответом Гириша, но если вы действительно хотите записать что-то независимо от других обещаний, вы можете сделать что-то "хакерское", например:

driver.executeScript(function rf(a){return a;}, msg).then(function(s) {
    console.log(s);
});
Другие вопросы по тегам