ignoreSynchronization
и async/ await
сильно отличаются друг от друга.
ignoreSynchronization:
Эта функция уже устарела и заменена функцией waitForAngularEnabled()
.
Зачем он нужен?
Транспортир широко используется для тестирования Angular веб-сайтов. Поэтому, когда запускается выполнение, транспортир ищет angular компонентов в тестируемом приложении. Итак, если мы тестируем приложение angular, можно инициализировать
browser.waitForAngularEnabled(true)
, что также означает
browser.ignoreSynchronization = false
Но если кто-то захочет для тестирования веб-сайта, отличного от angular, необходимо отключить поиск компонентов angular во время выполнения. Следовательно, ниже используются настройки
browser.waitForAngularEnabled(false)
, что также означает
browser.ignoreSynchronization = true
asynch / await
Они используются ручкой обещал. Так как JavaScript является асинхронным языком, многие функции обратного вызова вызываются во время выполнения, и для обработки этих функций используется обещание.
Теперь я объясню результаты второй и третьей программ:
await console.log('1'); // 1 will be printed
await element(by.css('#kw')).sendKeys('protractor').then(() => {
console.log('2'); // as `await` keyword is used, execution will wait till promise is resolved and then 2 is printed
});
await console.log('3'); // print 3
await console.log('4'); // print 4
await element(by.css('#su')).click().then(() => {
console.log('5'); // again execution will wait till promise is resolved and 5 is printed
})
await console.log('6'); // print 6
Следовательно, op равен 1,2,3,4,5,6
для третьего кода
console.log('1'); // print 1
element(by.css('#kw')).sendKeys('protractor').then(() => {
console.log('2'); // this block will be handled by browser for execution and executed once stack is emppty
});
console.log('3'); // print 3
console.log('4'); // print 4
element(by.css('#su')).click().then(() => {
console.log('5'); // this block will be handled by browser for execution and executed once stack is empty, after printing 2
})
console.log('6'); // print 6. Now stack is empty and after printing 6, 2 will be printed
Следовательно op равен 1,3,4,6,2,5
Если вы хотите узнать больше об асинхронном программировании, проверьте это видео Филиппа Робертса из JSConfEU
Надеюсь, это решит ваш вопрос: -)