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