提问人:Anil Tiwari 提问时间:6/30/2022 最后编辑:FodyAnil Tiwari 更新时间:7/21/2022 访问量:454
如何从文本中提取数值,以及如何在赛普拉斯中将其转换为数字
how to extract numeric value out of text ,along with converting it into number in Cypress
问:
嗨,伙计们,因为我是这个柏树和 UI 自动化的新手,我需要您的帮助来解决当前情况
我有一个这样的网格,我在下面创建了一个代码,它作为参数并从 UI 读取,但它有很多用于填充的选项卡,因此我使用标签来到达特定的索引行custom command
support\commands.js
OrderID
Freight info
nested div
parents()
Cypress.Commands.add('readFreightInfo', (OrderID) => {
return cy.get('.simple-table__cell:nth-child(1)')
.contains(OrderID)
.parents("div[role='row']")
.find('div')
.eq(2)
.invoke('text')
})
但它返回的文本是“\n 65.88”
我需要什么
我只需要数字部分,即 299.88 英寸Number type
因为它是我之前使用的通用验证方法
cy.readFreightInfo(10250).should('eq', 65.83)
但现在我想断言它作为 should lies 的返回值custom command
between 60 and 70
到目前为止我尝试过什么
我已经尝试使用这个答案中提到的两种解决方法
答:
0赞
Alapan Das
6/30/2022
#1
您可以从自定义命令返回值,如下所示:
Cypress.Commands.add('readFreightInfo', (OrderID) => {
cy.get('.simple-table__cell:nth-child(1)')
.contains(OrderID)
.parents("div[role='row']")
.find('div')
.eq(2)
.invoke('text')
.then((text) => {
return cy.wrap(+text.replaceAll('\n ', '')) //returns 65.83 as number
})
})
然后在你的测试中,你可以这样做:
cy.readFreightInfo(10250).then((numValue) => {
cy.wrap(numValue).should('eq', 65.83) //direct assert
cy.wrap(numValue).should('be.gte', 60).and('be.lte', 70) //greater than equal to 60 and less than equal to 70
})
0赞
TesterDick
6/30/2022
#2
.trim()
删除文本两端的行终止符。
另外,获取行的快捷方式 - 使用 ..contains('[role="row"]', OrderId)
Cypress.Commands.add('readFreightInfo', (OrderID) => {
cy.contains('div[role="row"]', OrderID)
.find('div')
.eq(2)
.invoke('text')
.then(text => parseInt(text.trim()) )
})
cy.readFreightInfo(10250)
.should('be.within', 60, 70)
trim() 方法从字符串的两端删除空格并返回一个新字符串,而不修改原始字符串。在此上下文中,空格是所有空格字符(空格、制表符、不间断空格等)以及所有行终止符字符(LF、CR 等)。
评论