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

如何在Cypress中绕过邮箱验证码实现自动化登录?

解决Cypress登录测试中邮箱验证码的绕过方案

方法1:使用测试环境专属免验证账号

多数后端会为测试环境配置无需验证码的测试账号,直接使用这类账号登录即可跳过验证步骤。

  • 示例代码:
cy.visit('/login')
cy.get('[data-testid="username-input"]').type('test_no_verify_user')
cy.get('[data-testid="password-input"]').type('test_pass_123')
cy.get('[data-testid="login-submit-btn"]').click()
// 直接进入系统,无需处理验证码

方法2:调用内部接口获取验证码

如果测试环境后端提供了获取验证码的内部接口,可通过接口请求拿到验证码后填入:

  • 示例代码:
cy.visit('/login')
// 输入账号密码触发验证码发送
cy.get('[data-testid="username-input"]').type('your_test_email@xxx.com')
cy.get('[data-testid="password-input"]').type('test_password')
cy.get('[data-testid="send-code-btn"]').click()

// 请求内部接口获取验证码
cy.request('POST', '/api/test/get-verification-code', { email: 'your_test_email@xxx.com' })
  .then(res => {
    const verifyCode = res.body.code
    cy.get('[data-testid="code-input"]').type(verifyCode)
    cy.get('[data-testid="login-submit-btn"]').click()
  })

方法3:覆盖前端验证逻辑

直接修改前端的验证函数或状态,强制跳过验证码校验:

  • 示例代码(假设前端存在verifyCodeValid校验函数):
cy.visit('/login')
// 输入账号密码
cy.get('[data-testid="username-input"]').type('your_test_email@xxx.com')
cy.get('[data-testid="password-input"]').type('test_password')

// 覆盖验证函数,直接返回验证通过
cy.window().then(win => {
  win.verifyCodeValid = () => true
})

// 点击登录,无需输入验证码
cy.get('[data-testid="login-submit-btn"]').click()

方法4:配合后端配置固定验证码

协调后端同学在测试环境设置固定验证码(比如123456),测试时直接输入该固定值即可完成验证。

注意:以上所有方法仅适用于测试环境,严禁在生产环境使用,避免引发安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:22:02