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

使用cy.session()结合cy.request()无法实现用户登录的问题排查

排查Cypress API登录失效的问题

先从你代码里的几个明确问题入手,逐个修复验证:

1. 修正TrackingId参数传递错误

调用loginByApi1时,第三个参数被错误包裹在单引号里,导致传递的是字符串字面量Cypress.env('trackingID'),而非实际环境变量值。正确写法:

cy.loginByApi1(
  Cypress.env('mainInvestorUserEmail'),
  Cypress.env('mainInvestorUserPassword'),
  Cypress.env('trackingID') // 移除外层单引号
)

这个错误会导致接口收到无效的TrackingId,大概率是返回空token的直接原因。

2. 修复localStorage的设置逻辑

cy.session的回调运行在Cypress后台上下文,直接使用window.localStorage操作的不是测试页面的存储。必须通过cy.window()获取页面的window对象后再设置:

Cypress.Commands.add("loginByApi1", (username1, password1, TrackingId1) => {
  cy.session([username1, password1, TrackingId1], () => {
    cy.request({
      method: 'POST',
      url: 'https://someWebPage/api/challenge/credentials',
      body: {
        email: username1,
        password: password1,
        TrackingId: TrackingId1
      }
    }).then((response) => {
      // 先打印完整返回结构,确认token字段是否正确
      cy.log('接口返回内容:', JSON.stringify(response.body))
      // 操作页面的localStorage
      cy.window().then(win => {
        win.localStorage.setItem('authToken', response.body.token)
      })
      cy.log('设置的token值:', response.body.token)
    })
  })
})

3. 确认接口返回的token字段名

你当前用body.token取值,但实际接口可能返回的是access_token、token_value等其他字段。可以:

  • 打开浏览器控制台Network面板,走一次UI登录流程,查看登录接口的返回结构
  • 在Cypress的cy.request回调里打印完整response.body,对比和UI登录的返回差异

4. 检查应用的登录验证机制

有些应用会同时用localStorage和cookie存储凭证,只设置localStorage可能不够。UI登录后查看浏览器Application面板:

  • 如果有相关登录cookie,在API登录后用cy.setCookie()同步设置
  • 如果用到sessionStorage,同样需要用cy.window()操作设置

5. 验证session缓存与页面上下文

调用cy.visit('/')后,可添加验证步骤确认凭证是否存在:

cy.visit('/')
cy.window().then(win => {
  cy.log('页面localStorage中的token:', win.localStorage.getItem('authToken'))
})

如果此时token不存在,可能需要调整cy.session配置,比如添加cacheAcrossSpecs: true,或者检查session的缓存key是否正确。

优先解决前两个问题,这是最可能导致登录失效的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:39:34