如何使用Cypress.io累加跨度标签中包含的值?

时间:2019-01-24 04:23:50

标签: mocha chai cypress

我需要遍历一组标签,这些标签具有与之关联的特定类并具有文本值。

例如。我想将所有包含文本的跨度下的文本取下来,将这些数字加起来,然后将它们存储在变量中,以将它们与屏幕上的其他内容进行比较:

<span class="property-ut text-old">12.50</span>
<span class="property-ut text-old"></span>
<span class="property-ut text-old"></span>
<span class="property-ut text-old">.50</span>
<span class="property-ut text-old">1.50</span>

我希望将14.50的值存储到变量中,并将其与屏幕上的其他值进行比较。

2 个答案:

答案 0 :(得分:0)

此处无需使用jQuery,赛普拉斯有一个'each'方法:https://docs.cypress.io/api/commands/each.html#Syntax

金额将以文本形式表示,因此您需要转换为not concat。如果您的值> 1,000,也会去除逗号

let sum = 0
let expectedVal = 14.50
cy.find('.old-text').each(($li, index, $lis) => {
  sum += parseFloat($li.text().replace(',', ''))
  if(index == $lis.length - 1) {
    assert.equal(expectedVal, sum, 'Expected value equals sum of each line item')
  }
}

请谨慎对待已接受的答案,但我无法使它以不同于预期的值失败...

答案 1 :(得分:-1)

在ID为span的div中的html #mySpantext标记上方创建本地服务器。使用jquery each函数遍历每个span类,并按如下所示计算span文本的sum

var sum = 0;
Cypress.$('.text-old').each(function() {
  sum += +Cypress.$(this).text()||0;
});

完整的柏树测试,如下所示;

describe('Sum of the span element values in Cypress', function() {
  it('Sum of the span element', function() {
    cy.visit('http://localhost:8080/test')
    cy.get('#mySpantext').find('span').then(() => {     
    var sum = 0;
    Cypress.$('.text-old').each(function() {
      sum += +Cypress.$(this).text()||0;
    });
    cy.log("Total sum of all span elements:"+sum);
    expect(sum).to.equal(14.5)
    })
  })
})

以下右侧给出的测试结果突出显示了跨度文本值; enter image description here