【问题标题】:Protractor tests are passing regardless if isDisplayed is true无论 isDisplayed 是否为真,量角器测试都会通过
【发布时间】:2015-05-29 06:07:59
【问题描述】:

我有一些 E2E 测试目前正在通过。我认为这按预期工作,但是当我在将数据输入字段后使用browser.sleep() 修改某些字段以查看测试在达到预期结果时是否会失败。

我们的测试规范填写了一个表格,保存表格后,我们返回主页查看表格名称以显示在网格中(如果保存成功)。

我们规范中的预期代码如下:

expect(element.all(mainPO.getScheduled()).isDisplayed());

主页对象:

this.currentScheduledCampaign = by.linkText(scheduledData.scheduledEntity.name);

this.getCurrentScheduledCampaign = function() {
     return this.currentScheduledCampaign;
}; 

预定实体:

this.scheduledEntity = {
    name: 'Protractor Test' + ' ' + uuid.v4()
};

为什么.isDisplayed() 会将量角器测试返回为失败,即使我在保存活动之前在browser.sleep() 期间从名称中删除了“量角器测试”?

我尝试在getCurrentScheduledCampaignscheduledData.scheduledEntity.name 上使用console.log() 运行,它似乎返回正确的预期名称为"Protractor Test [UUID]""{ using: 'link text', value: 'Protractor Test [UUID]'

【问题讨论】:

  • 我还从预期中提取了get方法并直接用element.all(by.linkText(scheduledData.scheduledEntity.name)).isDisplayed();替换它并在browser.sleep()期间将名称完全更改为“测试”并且规范仍然通过

标签: javascript angularjs testing protractor end-to-end


【解决方案1】:

这是因为您错过了茉莉花期望的toBe()/toEqual()/... 部分。根本没有断言。

以下是检查ElementArrayFinder 中的所有元素是否可见的方法:

var elements = element.all(mainPO.getScheduled());
elements.each(function (elm) {
    expect(elm.isDisplayed()).toBe(true);
});

【讨论】:

  • Hrm,不管结果如何,这似乎仍然会导致测试通过。使用console.log(elm) 似乎就像代码不存在一样。 console.log(elements) 似乎输出了预期的变量。
  • 我想我的问题之一是我们如何将elements 变量传递给elm 参数选项?
  • @user249656 我们没有将元素传递给each() - elmelements ElementArrayFinder 中的下一个ElementFinder。如果无法重现该问题,则很难判断当前出现了什么问题。是公共网站吗?
猜你喜欢
  • 1970-01-01
  • 2019-04-25
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 2019-07-31
  • 2017-12-03
相关资源
最近更新 更多