在迁移到cypress 12时,它说别名是根据dom进行调整的,我知道。但我没想到的是:在我的例子中,我有一个具有第一个值的字段。我将这个值放入别名中以供以后使用。在同一领域,我现在写了一些别的东西。稍后,我想再次将字段恢复到以前的值(作为别名存储)。但是在这个别名中是新值而不是前一个:
我是这样存储第一个值的:
function aliasAliasNameValue() {
cy.get(`div[data-textfield="editField"] input`)
.invoke('attr', 'value').as('ALIASNAME')
.then((attVal) => {
cy.log(attVal as string);
});
}
我是这样得到第一个值的:
function restoreAliasField() {
cy.get('@ALIASNAME').then((aliasN) => {
cy.get(`div[data-textfield="editField"] input`)
.clear()
.type(aliasN as unknown as string);
});
}
下面是测试的描述:
it('Change field and restore it.', () => {
// do something....
...
aliasAliasNameValue();
...
// change the field save and come back
restoreAliasField(); // but it is not restored: it writes the new value!!
...
});
如何获得第一个值?
我认为这行不工作.type(aliasN as unknown as string)
。
看起来你正在尝试定义类型,但你应该尝试使用.type(aliasN)
,看看它是否为你改善了事情。
从12.4.0版本开始,您可以再次使用它。尽管有必要添加一个额外的参数:
.as('ALIASNAME', { type: 'static' }
type: 'query'将更新变量…