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

求助:如何在Cypress中自动化或绕过文本型验证码?

处理文本验证码的可行方案
  • 测试环境绕过(优先推荐)
    找开发团队在测试环境做针对性调整:

    • 给测试专用账号添加白名单,登录或验证时直接跳过验证码步骤
    • 设置固定验证码值(比如永久为123456),测试时直接填入该值
    • 新增测试专用接口,调用后可绕过验证码验证逻辑
      验证码的核心作用是拦截恶意自动化,测试环境完全没必要用它阻碍测试流程,这是最稳定的解决方式。
  • 拦截验证码请求固定返回值
    如果验证码是通过前端请求后端接口生成的,用Cypress的cy.intercept()拦截该请求,直接返回预设的验证码内容:

// 拦截获取验证码的接口,返回固定验证码
cy.intercept('GET', '/api/captcha/generate', {
  code: 'XYZH',
  image: 'base64-encoded-image' // 可选,保证页面显示的验证码和输入值一致
}).as('fetchCaptcha');

// 触发验证码加载(比如点击刷新按钮)
cy.get('.captcha-refresh').click();
cy.wait('@fetchCaptcha');

// 填入预设的验证码
cy.get('#captcha-input').type('XYZH');
  • 解决手动输入时验证码刷新的问题
    你用cy.pause()时验证码变更,是因为页面有自动刷新验证码的定时器。可以先禁用定时器再暂停:
// 禁用页面的setInterval,阻止验证码自动刷新
cy.window().then(win => {
  cy.stub(win, 'setInterval').returns(null);
});

// 此时暂停,验证码不会自动变更,手动输入后继续测试
cy.pause();
  • OCR识别(临时救急,不推荐)
    用Tesseract.js这类OCR库识别验证码图片,但准确率受验证码样式、干扰线影响极大,且容易触发反爬机制,仅适合临时测试场景。实现思路是获取验证码图片的base64数据,传入OCR库解析后填入输入框,但稳定性极差,不建议作为长期方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:27:04