使用 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 的示例):