比较两个会话ID;在柏树上

回首
回首
回首
订阅者
268
文章
0
评论
测试交流2163字数 196阅读0分39秒阅读模式
摘要我一般不熟悉自动化和编码,我想通过以下步骤比较两个会话ID值: 登录后立即获取第一个值 刷新页面 获取第二个值并使。。。

我一般不熟悉自动化和编码,我想通过以下步骤比较两个会话ID值:

  1. 登录后立即获取第一个值
  2. 刷新页面
  3. 获取第二个值并进行断言。

为了简化事情,我做了一个自定义命令:文章源自玩技e族-https://www.playezu.com/194609.html

Cypress.com命令。添加('getSessionId',()=>{文章源自玩技e族-https://www.playezu.com/194609.html

let sessionId
cy.getCookie('development')
.its('value').then(($value) => {
    sessionId = String($value)
    })    

})文章源自玩技e族-https://www.playezu.com/194609.html

我希望测试脚本看起来像这样:文章源自玩技e族-https://www.playezu.com/194609.html

...文章源自玩技e族-https://www.playezu.com/194609.html

设firstSessionId=cy.getSessionId()文章源自玩技e族-https://www.playezu.com/194609.html

cy.reload()文章源自玩技e族-https://www.playezu.com/194609.html

设secondSessionId=cy.getSessionId()文章源自玩技e族-https://www.playezu.com/194609.html

expect(firstSessionId).to.eq(secondSessionId)文章源自玩技e族-https://www.playezu.com/194609.html

...文章源自玩技e族-https://www.playezu.com/194609.html

这有两个问题:

  1. 在这种情况下,我无法以字符串形式访问这些值
  2. expect在获得ID之前运行(我猜是因为cypress的异步特性?)

如果有任何关于我做错了什么的暗示,我将不胜感激。谢谢

深圳软件测试

 
评论  2  访客  2
    • TesterDick
      TesterDick 9

      这是执行测试的最简单方法,在这种情况下不需要自定义命令。
      cy.getCookie(‘development’).its(‘value’)
      .then(sessionId1 => {

      cy.reload()

      cy.getCookie(‘development’).its(‘value’)
      .then(sessionId2 => {
      expect(sessionId1).to.eq(sessionId2)
      })
      })

      如果出于其他原因需要自定义命令,
      Cypress.Commands.add(‘getSessionId’, () => {
      cy.getCookie(‘development’).its(‘value’) // last command is returned
      })

      cy.getSessionId().then(sessionId1 => {

      cy.reload()

      cy.getSessionId().then(sessionId2 => {
      expect(sessionId1).to.eq(sessionId2)
      })
      })

      • Alapan Das
        Alapan Das 9

        您可以通过自定义命令返回值,如下所示:
        Cypress.Commands.add(‘getSessionId’, () => {
        cy.getCookie(‘development’)
        .its(‘value’)
        .then((val) => {
        return cy.wrap(val)
        })
        })

        然后在测试中,您可以执行以下操作:
        //Get First session Id
        cy.getSessionId.then((sessionId1) => {
        cy.wrap(sessionId1).as(‘sessionId1’)
        })

        //Refresh Page
        cy.reload()

        //Get Second session Id
        cy.getSessionId.then((sessionId2) => {
        cy.wrap(sessionId2).as(‘sessionId2’)
        })

        //Assert both
        cy.get(‘@sessionId1’).then((sessionId1) => {
        cy.get(‘@sessionId2’).then((sessionId2) => {
        expect(sessionId1).to.eq(sessionId2)
        })
        })

      匿名

      发表评论

      匿名网友
      确定

      拖动滑块以完成验证