使用 expect 验证元素的数量
Verifying amount of elements using expect
所以我确定了一个元素
var errorAlert = element.all('[id*="type-alert"]');
我正在尝试创建一个函数来验证是否显示了 2 个警报..
this.isAlertsDisplayed = function() {
return expect(errorAlert.count()).toEqual(2);
};
当我看到这个示例对其他人有用时,我一直遇到一个可怕的类型错误:.toEqual 不是一个函数。我做错了什么?
您的定位器有误。您的定位器应该有 by.css() 或 by.id 或类似的东西 .
尝试var errorAlert = $$('[id="type-alert"]') or
var errorAlert = element.all(by.id('type-alert'))
@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
and eslint-plugin-protractor
plugin (>=1.29.0), the valid-locator-type
rule,如果您将文字传递给 element()
或 element.all()
,或者如果您将 "by" 定位器传递给 $()
或$$()
.
而且,如果您在 IDE 选择中配置了 ESLint
,那么在实时编码期间您将如何获得警告(来自 PyCharm 的示例):
所以我确定了一个元素
var errorAlert = element.all('[id*="type-alert"]');
我正在尝试创建一个函数来验证是否显示了 2 个警报..
this.isAlertsDisplayed = function() {
return expect(errorAlert.count()).toEqual(2);
};
当我看到这个示例对其他人有用时,我一直遇到一个可怕的类型错误:.toEqual 不是一个函数。我做错了什么?
您的定位器有误。您的定位器应该有 by.css() 或 by.id 或类似的东西 .
尝试var errorAlert = $$('[id="type-alert"]') or
var errorAlert = element.all(by.id('type-alert'))
@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
and eslint-plugin-protractor
plugin (>=1.29.0), the valid-locator-type
rule,如果您将文字传递给 element()
或 element.all()
,或者如果您将 "by" 定位器传递给 $()
或$$()
.
而且,如果您在 IDE 选择中配置了 ESLint
,那么在实时编码期间您将如何获得警告(来自 PyCharm 的示例):