我想通过别名存储所有输入的值,然后在更改数据后获取当前值,并将以前的别名与当前的别名进行比较。
我的操作:首先,获取所有输入值
for (let i = 0; i < 5; i++) {
cy.get('.input').eq(i).invoke('val').then(val => cy.log(val)).as(`previous${i}`);
}
其次,通过在下拉列表中选择示例来更改数据
cy.get('.select').select(1);
第三,获取当前所有输入值
for (let i = 0; i < 5; i++) {
cy.get('.input').eq(i).invoke('val').then(val => cy.log(val )).as(`current${i}`);
}
然后我创建了一个比较方法。
for (let i = 0; i < 5; i++) {
instanceConf.verifyingInputChanging(`@previous${i}`, `@current${i}`);
}
方法本身:
verifyingInputChanging(prevAlias, currenAlias){
cy.get(prevAlias).then((prev_content) => {
cy.get(currenAlias).then((cur_content) => {
expect(cur_content).to.not.eq(prev_content)
})
})
}
不幸的是,它不能比较输入值。如何处理呢?
1条答案
按热度按时间bogh5gae1#
此问题来自附加的
.then()
语句,您在这些语句中对值执行cy.log
操作。如果删除这些函数,则测试应按预期运行。**为什么?**当使用回调简写 * 而没有 * 显式返回时,最终返回的是在
.then()
中调用的函数,而不是变量val
。因此别名“value”为null,因为它是cy.log(val)
的生成值。如果你需要
cy.log
这个值,你必须返回整个语句,沿着一个单独的then来产生这个值,否则,我建议完全删除.then()
。