如何验证表格列数值在0.01-99999999.99?Cypress遇Infinity报错
Cypress验证表格列数值范围问题解决
问题描述
需要验证表格某列的230行数值是否全部满足大于0.01且小于99999999.99,尝试执行以下Cypress代码:
cy.get('#credits [align="right"]') .invoke('text') .then(parseFloat) .should('be.gte', 0.01)
但出现报错:expected 'Infinity' to be at least 0.01,询问是否需要通过循环处理。
问题原因
直接对多个匹配元素调用invoke('text')时,Cypress会将所有元素的文本内容拼接成一个字符串。例如列中数值为1.23、4.56时,拼接后得到1.234.56,用parseFloat解析这类非法格式的字符串会生成异常值(如Infinity),导致验证失败。
解决方案
必须遍历每个元素逐一验证,以下两种写法都能实现需求:
方法一:使用.each()循环处理
cy.get('#credits [align="right"]').each(($el) => { const value = parseFloat($el.text().trim()) expect(value).to.be.gte(0.01).and.be.lte(99999999.99) })
方法二:使用.should()回调批量验证
cy.get('#credits [align="right"]').should(($els) => { $els.each((index, el) => { const value = parseFloat(Cypress.$(el).text().trim()) expect(value).to.be.within(0.01, 99999999.99) }) })
注意事项
- 调用
trim()去除文本前后空格,避免因空格导致的解析错误 - 用
within断言可同时验证数值的上下限,代码更简洁
内容的提问来源于stack exchange,提问作者Jean Anjos
相关产品推荐
相关产品推荐

