Cypress Version12:更改字段时将覆盖以后使用的别名变量



在迁移到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'将更新变量…

最新更新