我是量角器和打字稿的新手,我现在正在尝试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是一个不好的做法,我不会在代码中使用它,但是,在构建测试时它很有用。
答案 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");
});
希望有帮助。