Cypress中cy.wrap()无法存储cy.invoke()获取值的问题解决
问题解决方法
你的问题根源很明确:第二行代码cy.wrap('userId').as('generatedUsername')直接覆盖了第一行设置的别名@generatedUsername,所以后续获取到的是固定字符串'userId',而不是输入框里的实际用户名。
要解决这个问题,只需要做两个小修改:
- 删除那行覆盖别名的
cy.wrap('userId').as('generatedUsername').then(cy.log)代码; - 去掉第三行末尾多余的逗号(否则会触发语法错误)。
修改后的完整代码如下:
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
相关产品推荐
相关产品推荐

