Cypress测试中带%的文本执行greaterThan 0断言失败如何解决
问题原因
- 提取到的24小时汇率文本为带%后缀的字符串类型,无法直接和数字0进行大小比较,字符串和数字的类型不匹配直接触发断言失败。
- 部分汇率文本还带有正负号前缀,未做类型转换的情况下无法被断言方法正确识别为数值。
解决方案
首先对提取到的文本做预处理:去除末尾的%符号,再转换为数值类型后再做断言判断,修改后的代码如下:
describe('dropdown select', () => { it('open dropdown and check if 24hr rate is positive', () => { Cypress.on('uncaught:exception', (err, runnable) => {return false}) cy.visit('link') cy.get('[data-cy=accept-btn]').click() cy.get('#currency-select').should('be.visible').click() cy.get('[class=" css-zkvt1b-menu"]').should('be.visible').contains('EUR').click() cy.get('[class="Yq Zq"]').each((el) => { const text = el.text().trim(); // 移除%后缀后转换为数值类型 const rateValue = parseFloat(text.replace('%', '')); expect(rateValue).to.be.greaterThan(0); }) }); })
额外优化建议
- 你当前使用的
css-zkvt1b-menu、Yq Zq类名看起来是前端框架自动生成的动态哈希类名,后续前端代码迭代大概率会发生变化,建议让开发增加稳定的data-cy自定义属性来定位元素,提升用例的稳定性。 - 可以增加非空校验逻辑,避免元素未加载完成、文本为空的场景下触发转换异常。
内容的提问来源于stack exchange,提问作者ForeverJuniorNewbie
相关产品推荐
相关产品推荐

