Browser.sleep и browser.pause не выполняются - PullRequest
0 голосов
/ 23 января 2019

Я новичок в транспортире и машинописи и сейчас пробую каркас для PoC. Однако мне было интересно, почему browser.sleep () или browser.pause () не выполняются в следующем сценарии?
Тест завершается сразу после прохождения первого шага.

Given(/^I access the  Catalogue page$/, async () => {
    await expect(browser.getTitle()).to.eventually.equal("Sign in to your account");
});


Then(/^I should see the product$/, async () => {
    browser.sleep(5000);
    //expect(cataloguePage.allProducts.getText()).to.be("Fixed Product");
});

Я знаю, что использование browser.sleep - это плохая практика, и я не буду использовать его в своем коде, однако это полезно при создании тестов.

1 Ответ

0 голосов
/ 23 января 2019

Protractor использует WebdriverJS для взаимодействия с браузером, и все действия в webdriverJS являются асинхронными. Protractor использует функцию webdriverJS, называемую диспетчером обещаний, которая обрабатывает все эти асинхронные обещания, так что они выполняются в том порядке, в котором они написаны, и тесты становятся более читаемыми для создателя теста. WebdriverJS осуждает эту функцию, однако с появлением async / await управлять обещаниями стало проще. По этой причине рекомендуется отказаться от того, чтобы ваши тесты полагались на менеджер обещаний, поскольку в конечном итоге он будет недоступен в следующей версии webdriverJS, которую использует Protractor.

Я упомянул все это, потому что, судя по всему, после использования async / await у вас уже установлено значение SELENIUM_PROMISE_MANAGER, равное false в вашей конфигурации. Это означает, что эти обещания больше не выполняются транспортиром и должны обрабатываться вручную в вашем тесте.

Ваше ожидание не выполняется, потому что это обещание не ожидается в вашей асинхронной функции.

Given(/^I access the  Catalogue page$/, async () => {
    await expect(browser.getTitle()).to.eventually.equal("Sign in to your account");
});


Then(/^I should see the product$/, async () => {
    await browser.sleep(5000);
    //expect(cataloguePage.allProducts.getText()).to.be("Fixed Product");
});

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...