Я предполагаю, что browser.wait должен быть блокирующим вызовом, но он не работает так, как я ожидал. Вот мой пример:Protractor browser.wait на самом деле не ждет
describe("browser.wait", function() {
beforeEach(function() {
browser.wait(function() {
console.log('1 - BeforeEach WAIT');
return true;
});
console.log('2 - BeforeEach after wait');
});
afterEach(function() {
browser.wait(function() {
console.log('4 - afterEach WAIT');
return true;
});
console.log('5 - afterEach after wait');
});
it('should probably actually wait.', function() {
console.log('3 - IT statement');
expect(1).toBe(1);
});
Теперь, потому что я предположил, browser.wait фактически блокирует, я думал, что мои console.log звонки будут выполняться в порядке; 1,2,3,4,5;
Фактический выход я получаю:
2 - BeforeEach after wait
1 - BeforeEach WAIT
3 - IT statement
5 - afterEach after wait
4 - afterEach WAIT
Как я могу получить browser.wait на самом деле ждать? Или я использую неправильную функцию полностью? Мне нужно, чтобы что-то блокировалось, пока мой браузер не доберется туда, где он должен быть для следующего звонка.
Прекрасная вещь, связанная с тем, что пример кода в документе показывает это как блокирование ожидания, в то время как раздел «Возвращает» предупреждает вас, что это «обещание». См. Https://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.wait Пример из документа: 'var started = startTestServer(); driver.wait (начато, 5 * 1000, «Сервер должен начинаться в течение 5 секунд»); driver.get (getServerUrl()); ' – atoth
@atoth - соглашайтесь с вашим заявлением.Образец кода, который вы указали, вводит в заблуждение, как это показано в качестве блокировки. то есть функция 'driver.get()' должна фактически завернуться в выполненном обещании. –