首页 > web前端 > js教程 > 自动化一次性密码 (OTP) 测试:一份休闲指南

自动化一次性密码 (OTP) 测试:一份休闲指南

Patricia Arquette
发布: 2024-12-18 06:01:11
原创
818 人浏览过

Automate One-Time Password (OTP) Testing: A Casual Guide

自动化一次性密码 (OTP) 测试:一份休闲指南

测试一次性密码 (OTP) 可能会很痛苦,对吗?不断地在您的应用程序和短信收件箱之间切换、寻找代码......现在是我们解决这个问题的时候了。让我们来谈谈使用完成工作的工具来自动化整个过程。是的,我们也会使用临时电话号码,但我们会保持冷静并专注于您的开发工作流程的真正价值。

以下是如何使用 Playwright、Puppeteer、Selenium 等工具和一点创造力来升级 OTP 游戏。无论您的堆栈如何,您都会在这里找到一些有价值的东西。


为什么要费心自动化 OTP?

平常的挣扎

  • 在测试和短信收件箱之间切换
  • 像 2005 年一样复制粘贴
  • 在多个设备上进行测试?呃。

聪明的修复

以编程方式获取一些临时电话号码,通过 API 获取 OTP,然后将其余部分自动化。不再有来回,不再有戏剧性。在冲刺评审期间,您会看起来像个巫师。


为什么选择Quackr.io?

有很多提供临时电话号码的服务,那么为什么选择 Quackr.io?交易如下:

  • 快速可靠:Quackr.io 在几秒钟内发送 SMS 消息,这正是您测试 OTP 流程时所需要的。
  • 简单的 API:他们的 API 非常容易集成 — 您将立即启动并运行。
  • 全球号码:使用来自不同国家/地区的号码进行测试,以覆盖区域用例。
  • 经济实惠的计划:非常适合想要经济高效的解决方案而不牺牲质量的开发人员和团队。

我们使用了 Quackr.io,因为它满足了所有这些要求。欢迎您尝试其他产品,但如果您正在寻找可靠的东西,Quackr.io 是一个很好的起点。


你需要什么

  • 临时电话号码:任何可靠的服务都可以。 (我们将在这里使用 Quackr.io,因为它效果很好。)
  • 您最喜欢的 HTTP 客户端:Axios?拿来?你的电话。
  • 测试框架:剧作家、木偶师、Selenium...无论你喜欢什么。
  • Node.js:因为为什么不呢?

有趣的部分:编码出来

以下是构建 OTP 自动化脚本的方法。将其视为起点 - 让它成为您的起点。

第 1 步:获取临时电话号码

首先,注册提供临时电话号码的服务(我们使用的是 Quackr.io)。获取您的 API 密钥,然后开始吧。

第 2 步:安装一些基础组件

如果您正在使用 Node.js,您将需要一些包:

npm install playwright axios dotenv
登录后复制

第三步:脚本

这是一个使用 Playwright 和 Axios 的示例。请随意根据您的设置进行调整。

const { chromium } = require('playwright');
const axios = require('axios');
require('dotenv').config();

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();

  // Fetch a temporary phone number
  const phoneResponse = await axios.get('https://quackr.io/api/phones', {
    headers: { 'Authorization': `Bearer ${process.env.API_KEY}` }
  });

  const phoneNumber = phoneResponse.data.number;
  console.log(`Using phone number: ${phoneNumber}`);

  // Simulate your app’s signup flow
  await page.goto('https://yourapp.com/signup');
  await page.fill('#phone-input', phoneNumber);
  await page.click('#send-otp');

  // Wait for the OTP
  let otp;
  while (!otp) {
    const messages = await axios.get(`https://quackr.io/api/messages?phone=${phoneNumber}`, {
      headers: { 'Authorization': `Bearer ${process.env.API_KEY}` }
    });

    const otpMessage = messages.data.find(msg => msg.body.includes('Your OTP is'));
    if (otpMessage) {
      otp = otpMessage.body.match(/\d{6}/)[0];
      console.log(`Got OTP: ${otp}`);
    } else {
      console.log('Waiting for OTP...');
      await new Promise(resolve => setTimeout(resolve, 2000));
    }
  }

  // Enter the OTP and complete verification
  await page.fill('#otp-input', otp);
  await page.click('#verify-otp');

  console.log('OTP verification done!');

  await browser.close();
})();
登录后复制

第四步:保守你的秘密……秘密

使用 .env 文件作为您的 API 密钥。示例:

API_KEY=your_api_key_here
登录后复制

额外提示

  1. 并行运行测试:使用多个电话号码来加快速度。
  2. Mock It for CI:通过模拟 OTP 流程,在 CI/CD 期间保存一些 API 调用。
  3. 保持弹性:为不稳定的网络问题添加重试。
  4. 记录一切:跟踪 OTP 和响应以进行调试。

接下来是什么?

您可以将此设置扩展到:

  • 双因素身份验证 (2FA)
  • 电话号码验证测试
  • 流畅的入职流程

最后的想法

这只是表面现象。自动化 OTP 可以节省大量时间,并使您的测试感觉更加完美。如果您有让这一切变得更好的想法,我很想听听。有处理 OTP 的酷技巧吗?把它们放在下面——让我们互相学习!

以上是自动化一次性密码 (OTP) 测试:一份休闲指南的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板