使用expect验证元素的数量

时间:2016-11-10 18:01:27

标签: javascript protractor cucumberjs

所以我确定了一个元素

var errorAlert = element.all('[id*="type-alert"]');

我正在尝试创建一个功能,以验证是否显示了2个警报..

this.isAlertsDisplayed = function() {
    return expect(errorAlert.count()).toEqual(2);
};

我一直打开一个friken typeError:.toEqual不是一个函数,当我看到这个例子为别人工作时..我做错了什么?

2 个答案:

答案 0 :(得分:2)

你的定位器错了。你的定位器应该有 by.css()或by.id或类似的东西

尝试var errorAlert = $$('[id="type-alert"]') or var errorAlert = element.all(by.id('type-alert'))

答案 1 :(得分:2)

@Danny走在正确的轨道上。除了您只是错过了by.css()部分,请替换:

var errorAlert = element.all('[id*="type-alert"]');

使用:

var errorAlert = element.all(by.css('[id*="type-alert"]'));

或者用:

var errorAlert = $$('[id*="type-alert"]');

请注意,您可以在此过程中更早发现此类问题 - 即使在执行测试并尝试找出问题之前,也会静态发现。如果您使用ESLinteslint-plugin-protractor plugin(> = 1.29.0),valid-locator-type rule会在您将文字传递给element()或{{1}时发出警告},或者如果您已将“by”定位器传递给element.all()$()

并且,如果您在所选择的IDE中配置了$$(),那么您将在实时编码期间获得警告(例如来自PyCharm):

enter image description here