所以我确定了一个元素
var errorAlert = element.all('[id*="type-alert"]');
我正在尝试创建一个功能,以验证是否显示了2个警报..
this.isAlertsDisplayed = function() {
return expect(errorAlert.count()).toEqual(2);
};
我一直打开一个friken typeError:.toEqual不是一个函数,当我看到这个例子为别人工作时..我做错了什么?
答案 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"]');
请注意,您可以在此过程中更早发现此类问题 - 即使在执行测试并尝试找出问题之前,也会静态发现。如果您使用ESLint
和eslint-plugin-protractor
plugin(> = 1.29.0),valid-locator-type
rule会在您将文字传递给element()
或{{1}时发出警告},或者如果您已将“by”定位器传递给element.all()
或$()
。
并且,如果您在所选择的IDE中配置了$$()
,那么您将在实时编码期间获得警告(例如来自PyCharm):