You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress中cy.wrap()无法存储cy.invoke()获取值的问题解决

问题解决方法

你的问题根源很明确:第二行代码cy.wrap('userId').as('generatedUsername')直接覆盖了第一行设置的别名@generatedUsername,所以后续获取到的是固定字符串'userId',而不是输入框里的实际用户名。

要解决这个问题,只需要做两个小修改:

  1. 删除那行覆盖别名的cy.wrap('userId').as('generatedUsername').then(cy.log)代码;
  2. 去掉第三行末尾多余的逗号(否则会触发语法错误)。

修改后的完整代码如下:

cy.get('#memberID').invoke('val').as('generatedUsername').then(cy.log)
cy.get('[class="positive-complete qualifiedFunctionalityCommand positive"]').eq(3).click()
cy.contains('Logout').click()
cy.get('@generatedUsername').then( memberID => {
  cy.get('#j_username').type(memberID)
})

如果你确实需要通过cy.wrap来存储这个用户名(比如要先对值做处理),可以把invoke的结果传递给cy.wrap再设置别名,代码如下:

cy.get('#memberID').invoke('val').then(username => {
  // 这里可以添加对username的处理逻辑,比如.trim()
  cy.wrap(username).as('generatedUsername').then(cy.log)
})
cy.get('[class="positive-complete qualifiedFunctionalityCommand positive"]').eq(3).click()
cy.contains('Logout').click()
cy.get('@generatedUsername').then( memberID => {
  cy.get('#j_username').type(memberID)
})

内容的提问来源于stack exchange,提问作者user16625222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 00:19:55