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

Cypress测试:如何等待用户手动输入验证码后继续执行

解决Cypress等待手动输入验证码的问题

你可以利用Cypress断言的自动重试机制实现等待用户输入验证码的需求。Cypress的.should()命令会持续检查目标元素状态,直到条件满足或超时(默认4秒,可自定义),刚好适配手动输入验证码的场景。

修改后的测试代码

it('Create Account', () => {
  cy.visit('http://localhost:4200/');
  // 点击前置按钮
  cy.get('.btn').click();
  cy.get('.bottom-box--inner > .flex > .btn').click();
  cy.get('.flex > .btn-primary').click();
  cy.get('.flex > .btn-primary').click();
  cy.get('#ion-input-0').click();
  // 输入用户名
  cy.get('#ion-input-0').type('username');
  cy.get('#ion-input-1').click();
  // 输入用户邮箱
  cy.get('#ion-input-1').type('user@email.com');
  cy.get('.p-5 > .btn').click();

  // 等待用户手动输入验证码(替换为你的验证码输入框选择器)
  cy.get('#你的验证码输入框选择器')
    .should('not.have.value', '') // 等待输入框不为空
    .should('have.value', (value) => {
      // 可选:验证输入为6位数字
      expect(value).to.match(/^\d{6}$/);
    });

  // 输入完成后自动点击确认按钮
  cy.get('app-otp.ng-star-inserted > .ion-no-border > .ios > .p-5 > .btn').click();
});

关键说明

  • 选择器替换:将#你的验证码输入框选择器替换为实际的验证码输入框元素选择器(如果是多输入框组成的OTP组件,可改为检查所有输入框均有值)。
  • 超时自定义:若默认4秒不够用,可通过.should({ timeout: 60000 }, 'not.have.value', '')设置更长超时(比如60秒),给用户足够时间查收并输入验证码。
  • 格式验证:可选添加6位数字的正则校验,避免无效输入导致后续测试失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:14:57