Прежде всего, я уже проверил различные сообщения и блоги, касающиеся этого момента, и я до сих пор не могу понять, как это сделать правильно.
Я пробовал много разных комбинаций:
- Ожидание браузера
- protractor.controlFlow(). Выполнить
- protractor.controlFlow(). Ждать (
... Еще не успел..
Моя проблема
В моей функции beforeEach я хотел бы назвать обещание транспортира и дождаться его разрешения до выполнения остальной части моего кода.
Мой код
Я подготовил этот простой тест для тех, кто хочет помочь мне.
describe('testAsync', function() {
beforeEach(function() {
console.log('beforeEach - step 1 ')
browser.get("https://angularjs.org/");
console.log('beforeEach - step 2 ')
testFunc()
console.log('beforeEach - after testFunc - step 3')
});
var testFunc = function(){
console.log("testFunc - step 1")
browser.wait(function() {
var deferred = protractor.promise.defer();
element(by.id('twitter-widget-1')).isPresent()
.then(function (isPresent) {
console.log("testFunc - step 2")
deferred.fulfill(isPresent);
});
return deferred.promise;
});
console.log("testFunc - step 3")
}
it('test after BeforeEach', function() {
console.log("Last trace")
});
});
Текущий выход
[launcher] Running 1 instances of WebDriver
beforeEach - step 1
beforeEach - step 2
testFunc - step 1
testFunc - step 3
beforeEach - after testFunc - step 3
testFunc - step 2
Last trace
Ожидаемый результат
[launcher] Running 1 instances of WebDriver
beforeEach - step 1
beforeEach - step 2
testFunc - step 1
testFunc - step 2 // <------ This is within the promise resolve
testFunc - step 3
beforeEach - after testFunc - step 3
Last trace