所以我有一个页面对象功能,可以验证屏幕上是否出现特定错误。 errorMsg是一个已经在var
中定义的选择器this.isErrorMessageDisplayed = function() {
expect(errorMsg.isDisplayed()).to.become(true);
}
此功能效果很好。但是,在处理具有多个元素的元素时,我一直遇到问题。例如,如果将其定义为$$并且我想验证它们的所有实例,我尝试了这样的事情。
this.isErrorMessageDisplayed = function() {
for(i = 0; i < errorMsg.count(); i++){
expect(errorMsg.get(i).isDisplayed()).to.become(true);
}
}
为什么这不起作用,但是只要有一个元素我试图识别它效果很好?谢谢你的帮助!
答案 0 :(得分:3)
方法count()
返回Promise。它不能用作循环的上限。而是使用$$(...).each
迭代每个元素:
this.isErrorMessageDisplayed = function() {
errorMsg.each(e => {
expect(e.isDisplayed()).to.become(true);
});
};
答案 1 :(得分:2)
首先,量角器以异步方式运行。这意味着当量角器执行一行并进入下一行时,并不意味着该行已完成执行。欢迎来到异步编程世界:P
以下代码是我的建议:
this.isErrorMessageDisplayed = function () {
errorMsg.each(function (elem,index) {
expect(elem.isDisplayed()).toBe(true)
});
};
答案 2 :(得分:0)
您也可以使用以下内容,
this.isErrorMessageDisplayed = function() {
expect(errorMsg.isDisplayed()).not.to.include(false);
};
如果你有一个元素数组,那么isDisplayed将返回显示状态数组,如[true,true,true]
。所以你需要验证数组中不包含false
。