文本字段 cypress 中的金额计算

Amount calculation in textfield cypress

我有一个场景,在选择特定产品后,金额会反映在文本字段中,当我们单击复选框时,金额会自动翻倍。 这是我的代码:

cy.getBySel('textfield').click().then(($title) => {
         const op1 = $title.val().replace('$', " ").trim()
            cy.log(op1) -- Here i get the amount without the currency ;  an amount example can be 25,15
            const totalProduct = op1 * 2  , 
            cy.log(totalProduct) //when i print here i get NaN
            cy.get('#product-checkbox').click()
            cy.getBySel('textfield').click().should('have.value', totalProduct) 
    // Here i need to check the value is equal to op1*2 that is totalProduct
    
When I am running the test, I am getting: 
expected <input> to have value NaN, but the value was 50,30 $
    

有人可以告诉我为什么即使我正在调整货币也会得到 NaN 吗?

从页面中获取的所有值都是文本。

要对其进行数学运算,请先转换为数字。

const op1 = $title.val().replace('$', " ").trim()
const totalProduct = +(op1.replace(',', '.')) * 2   
cy.get('#product-checkbox').click()
cy.getBySel('textfield').click()
  .should('have.value', totalProduct.toLocaleString('de-DE'))

上面比较文本值的最后一行使用了两个字符串,但比较数字可能更精确。

const op1 = $title.val().replace('$', " ").trim()
const totalProduct = +(op1.replace(',', '.')) * 2   
cy.get('#product-checkbox').click()
cy.getBySel('textfield').click()
  .should($title2 => {
    const op2 = $title2.val().replace('$', " ").trim()
    expect(op2).to.eq(totalProduct)                  // compare numbers
  })

你可以更进一步,做一个转换函数

const toNumber = ($el) => {
  return +($el.val().replace('$', " ").trim().replace(',', '.'))
}

const totalProduct = toNumber($title) * 2   
cy.get('#product-checkbox').click()
cy.getBySel('textfield').click()
  .should($title2 => {
    const op2 = toNumber($title2)
    expect(op2).to.eq(totalProduct)          // compare numbers
  })