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

Cypress如何获取Mailosaur虚拟设备的一次性验证码并填入输入框

Cypress 对接 Mailosaur 虚拟设备获取一次性验证码实现方案

前置配置检查

  • 先确认项目已安装官方Cypress Mailosaur插件,未安装的话执行命令:npm install cypress-mailosaur --save-dev
  • 在Cypress支持文件(cypress/support/e2e.js,旧版本对应cypress/support/commands.js)中引入插件:import 'cypress-mailosaur'
  • 在cypress.config.js的env配置项中填入你的Mailosaur API Key,参考配置:
const { defineConfig } = require("cypress");

module.exports = defineConfig({
  e2e: {
    // 其他原有e2e配置保留
    env: {
      MAILOSAUR_API_KEY: "你的Mailosaur账户API密钥"
    },
  },
});

注意:API Key不要硬编码在测试用例逻辑中,统一放在环境配置项管理。

mailosaurGetDeviceOtp方法正确用法

你代码中调用的mailosaurGetDeviceOtp就是官方封装的专门拉取虚拟验证器TOTP验证码的方法,只要参数正确完全可以实现需求,注意以下要点:

  • 该方法为Cypress异步命令,必须通过.then()拿到返回的验证码值,不能同步直接赋值使用
  • 你传入的deviceName参数和后台虚拟设备名mailosaurINT完全一致的情况下,不需要额外传入设备ID,插件会自动匹配对应设备
  • 完整调用+输入验证码的代码示例:
// 先执行到验证码输入步骤,等待输入框渲染完成
cy.get('input[placeholder*="验证码"]') // 替换为你页面实际的验证码输入框选择器
  .should('be.visible')
  .then(() => {
    // 输入框可见后再拉取OTP,避免拿到过期验证码
    cy.mailosaurGetDeviceOtp("mailosaurINT").then(otp => {
      cy.get('input[placeholder*="验证码"]').type(otp)
    })
  })

关键提示:TOTP验证码默认30秒刷新一次,不要在跳转验证码页面前提前太久拉取,否则会拿到已过期的码导致校验失败,等验证码输入框加载完成后再调用接口拉取即可。

常见问题排查

  • 调用返回401权限错误:检查MAILOSAUR_API_KEY是否填写正确,确认该密钥对目标虚拟设备有访问权限
  • 调用返回设备不存在错误:检查传入的设备名是否和Mailosaur后台完全一致,注意大小写、前后空格、特殊字符的拼写偏差
  • 验证码输入后提示无效:检查拉取验证码的时机是否正确,确认Mailosaur虚拟设备配置的TOTP时间偏移和测试站点的配置一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:36:24