Browser.sleep和browser.pause不会执行

时间:2019-01-23 15:37:25

标签: typescript protractor cucumber

我是量角器和打字稿的新手,我现在正在尝试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 :(得分:0)

量角器使用WebdriverJS与浏览器进行交互,并且webdriverJS中的所有操作都是异步的。量角器使用一种称为诺言管理器的webdriverJS功能,该功能可处理所有这些异步诺言,以便按编写顺序执行它们,并使测试创建者更容易理解测试。 webdriverJS不赞成使用此功能,但是随着async / await的引入,使promise变得更易于管理。因此,建议您不要让测试依赖Promise Manager,因为它最终将在Protractor使用的即将发布的webdriverJS版本中不可用。

我之所以提到所有这些,是因为从您使用async / await来看,您已经在conf中将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");
});

希望有帮助。