cucumber-js 和 Chai 如何期望 DOM 中是否存在具有给定选择器的元素

cucumber-js and Chai how to expect if element with given selector exist in DOM

我对 cucumberjs 有疑问。我找不到办法确保 具有给定选择器的那个元素出现在 DOM 中。我在用着 cucumberjs 与柴。 https://github.com/cucumber/cucumber-js isPresent returns object - 不管元素是否存在。 所以问题是如何检查 DOM 中是否存在元素。

我将编辑问题以分享经验教训。我阅读文档还要感谢 Nathan Thompson。存在() returns 一个将解析元素是否出现在页面上的承诺。

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

然而,"eventually"这个词听起来很不愉快。我们想确定而不是最终确定。 :)

Here可以查看关于这个问题的文章进入我的个人博客。

Protractor return 中的几乎所有函数都承诺将解析为您实际想要测试的值。所以如果你只是想做类似下面的事情,它总是会失败,因为它断言了 returned by isPresent:

的 promise 对象
expect(element.isPresent()).to.be.false

我建议使用 Chai 的 chai-as-promised 插件来处理这种情况。它提供了 eventually 链,可以为您解决承诺并断言结果值。上面的例子看起来像这样:

expect(element.isPresent()).to.eventually.be.false

为什么在期望对 return 元素的承诺时我们使用“false”?也许你的意思是:expect(element.isPresent()).to.be.true?