我是量角器和打字稿的新手,现在正在尝试 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 是一种不好的做法,我不会在我的代码中使用它,但是,它在构建测试时很有用。
Protractor 使用 WebdriverJS 与浏览器交互,并且 webdriverJS 中的所有操作都是异步的。 Protractor 使用称为 Promise 管理器的 webdriverJS 功能来处理所有这些异步 Promise,以便它们按照编写的顺序执行,并且测试对于测试创建者来说变得更具可读性。
webdriverJS 已弃用此功能,但随着 async/await 的引入,promise 变得更容易管理。因此,建议您的测试不要依赖 Promise 管理器,因为它最终将在 Protractor 使用的即将推出的 webdriverJS 版本中不可用。
我提到所有这些是因为,从您使用 async/await 来看,您已经在conf.d文件中将 SELENIUM_PROMISE_MANAGER 设置设置为 false 。这意味着这些 Promise 不再由量角器解决,需要在测试中手动处理。
您的等待没有执行,因为您的异步函数中没有等待该承诺。
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");
});
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)