我对 cucumberjs 有疑问。我找不到办法确保 具有给定选择器的那个元素被呈现到 DOM 中。我在用着 cucumberjs 与 Chai 。 https://github.com/cucumber/cucumber-js isPresent 返回对象——不管元素是否存在。 所以问题是如何检查 DOM 中是否存在元素。
我将编辑问题以分享一个经验教训。我阅读文档还要感谢 Nathan Thompson。存在() 返回一个 promise ,该 promise 将解决该元素是否存在于页面上。
http://angular.github.io/protractor/#/api?view=Protractor.prototype.isElementPresent
代码示例有点误导。 所以如果你想知道 DOM 中是否存在具有给定选择器的元素,你必须使用这样的东西:
element(by.id('someId')).isPresent().then(function(isElementVisible) {
expect(isElementVisible).to.be.true;
});
或者使用带有 promises 的 chai。
expect(element.isPresent()).to.eventually.be.false
然而,“最终”这个词听起来很不愉快。我们想确定而不是最终确定。 :)
Here可以查看关于这个问题的文章进入我的个人博客。
最佳答案
Protractor 中的几乎所有函数都会返回 promise ,这些 promise 将解析为您实际想要测试的值。因此,如果您只是尝试执行以下操作,它总是会失败,因为它断言了 isPresent
返回的 promise 对象:
expect(element.isPresent()).to.be.false
我建议使用 chai-as-promised Chai 的插件来处理这种情况。它提供了 eventually
链,它将为您解决 promise 并断言结果值。上面的例子看起来像这样:
expect(element.isPresent()).to.eventually.be.false
关于javascript - cucumber-js 和 Chai 如何期望具有给定选择器的元素是否存在于 DOM 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30747931/