我对cucumberjs有疑问。我找不到办法确保 具有给定选择器的元素被呈现到DOM中。我正在使用 与柴的cucjs。 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;
});
或者使用chai和promises。
expect(element.isPresent()).to.eventually.be.false
然而,"最终"听起来很不愉快。我们希望确保最终不确定。 :)
Here可以在我的个人博客中查看有关此问题的文章。
答案 0 :(得分:10)
Protractor中的几乎所有函数都会返回将解析为您实际要测试的值的promise。因此,如果您只是尝试执行以下操作,它将始终失败,因为它在isPresent
返回的promise对象上断言:
expect(element.isPresent()).to.be.false
我建议使用Chai的chai-as-promised插件来处理这样的情况。它提供eventually
链,它将为您解析promise并在结果值上断言。上面的例子如下所示:
expect(element.isPresent()).to.eventually.be.false
答案 1 :(得分:-1)
为什么在期望返回元素的承诺时我们使用“false”?也许你的意思是:expect(element.isPresent()).to.be.true
?