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

如何使用Cypress type()处理自动添加的斜杠(/)问题

解决Braintree到期日期字段的Cypress输入问题

问题根源

你的代码里type('5','2025')调用错误——Cypress的type()方法第二个参数是配置选项(比如delay、force),不是输入内容。这导致实际只输入了'5',字段自然提示日期无效。另外,Braintree的托管字段依赖前端脚本自动格式化输入(比如输入两位月份后补斜杠),Cypress快速输入可能让格式化脚本没来得及触发。

可行解决方法

方法1:输入完整的日期字符串

直接输入不带斜杠的6位字符(MMYYYY),让字段的自动格式化脚本处理补斜杠:

cy.get('[class="braintree-credit-card-container"]')
  .find('#braintree-hosted-field-expirationDate')
  .click({force: true})
  .type('052025'); // 输入05后自动补/,2025会填入年份位

方法2:模拟手动输入的延迟

添加delay参数放慢输入速度,匹配手动输入的节奏,确保格式化脚本正常触发:

cy.get('[class="braintree-credit-card-container"]')
  .find('#braintree-hosted-field-expirationDate')
  .click({force: true})
  .type('052025', { delay: 100 }); // 每个字符间隔100ms

方法3:分步骤输入并等待斜杠

先输入月份,等待斜杠自动添加后再输入年份,更贴近真实操作流程:

cy.get('[class="braintree-credit-card-container"]')
  .find('#braintree-hosted-field-expirationDate')
  .click({force: true})
  .type('05')
  .wait(300) // 等待斜杠出现
  .type('2025');

额外注意:如果字段在iframe内

Braintree的托管字段通常嵌套在iframe中,需要先切换到iframe再操作:

// 定位到到期日期字段的iframe
cy.get('iframe[title="Braintree Expiration Date"]')
  .its('0.contentDocument.body')
  .should('not.be.empty')
  .then(cy.wrap)
  // 在iframe内操作字段
  .find('#braintree-hosted-field-expirationDate')
  .click({force: true})
  .type('052025', { delay: 100 });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:07:09