赛普拉斯:使用 trim() 或类似的东西测试 2 个元素是否相同
Cypress: test if 2 elements are the same using trim() or something similar
我有一个测试采用 table 的元素并通过查看它们的内容是否相同来反驳它们,并且成功了:
cy.compareInputToText(
'app-myTable table tbody > :nth-child(1) > :nth-child(2) > input',
'app-myTable table tbody > :nth-child(1) > :nth-child(3)'
);
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then(currentValue => {
cy.get(textSelector)
.should('have.text', currentValue);
});
});
问题是当我在要测试的组件中添加更长的 < td > 时,html 编译器会自动换行,因此在测试中它会给我一个错误,因为当它换行时就像添加一个 space...
我用 trim
尝试了各种解决方案,如下所示:
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then(currentValue => {
cy.get(textSelector)
.should('have.text', currentValue!.toString.trim());
});
});
但是没用。
错误:
错误:断言错误:4000 毫秒后重试超时:预期 的文本为“0.2”,但文本为“0.2”
根据你的错误消息,你的页面似乎有一个额外的 space,所以我认为你必须添加一个 space.
而不是修剪
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then((currentValue) => {
cy.get(textSelector).should('have.text', currentValue + ' ')
})
})
或者只是让文本从两者中删除 spaces 然后断言,例如:
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then((currentValue) => {
cy.get(textSelector)
.invoke('text')
.then((text) => {
expect(text.trim()).to.equal(currentValue.trim())
})
})
})
我有一个测试采用 table 的元素并通过查看它们的内容是否相同来反驳它们,并且成功了:
cy.compareInputToText(
'app-myTable table tbody > :nth-child(1) > :nth-child(2) > input',
'app-myTable table tbody > :nth-child(1) > :nth-child(3)'
);
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then(currentValue => {
cy.get(textSelector)
.should('have.text', currentValue);
});
});
问题是当我在要测试的组件中添加更长的 < td > 时,html 编译器会自动换行,因此在测试中它会给我一个错误,因为当它换行时就像添加一个 space...
我用 trim
尝试了各种解决方案,如下所示:
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then(currentValue => {
cy.get(textSelector)
.should('have.text', currentValue!.toString.trim());
});
});
但是没用。 根据你的错误消息,你的页面似乎有一个额外的 space,所以我认为你必须添加一个 space. 或者只是让文本从两者中删除 spaces 然后断言,例如:
错误:
错误:断言错误:4000 毫秒后重试超时:预期 的文本为“0.2”,但文本为“0.2”
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then((currentValue) => {
cy.get(textSelector).should('have.text', currentValue + ' ')
})
})
Cypress.Commands.add('compareInputToText', (inputSelector, textSelector) => {
cy.get(inputSelector)
.invoke('val')
.then((currentValue) => {
cy.get(textSelector)
.invoke('text')
.then((text) => {
expect(text.trim()).to.equal(currentValue.trim())
})
})
})