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

如何在Cypress测试中使用随机字符串?手机号随机生成失效问题

Cypress测试中手机号随机生成无效的解决方法

问题根源

  1. 当前使用的makeid函数会生成字母+数字的混合字符串,而手机号输入框通常仅支持纯数字输入,导致输入不被系统识别。
  2. 拼接固定字符串"82090808070"后,总长度达到19位,远超多数系统要求的手机号合法长度(比如国内标准为11位),格式不符合校验规则。

具体修复步骤

1. 编写纯数字随机生成函数

替换通用随机字符串函数,创建仅生成数字的工具函数,适配手机号输入需求:

function generateRandomDigits(length) {
  let result = '';
  const digits = '0123456789';
  for (let i = 0; i < length; i++) {
    result += digits.charAt(Math.floor(Math.random() * digits.length));
  }
  return result;
}

2. 生成符合规则的手机号

根据目标系统的手机号格式生成,以国内11位手机号为例(首位固定为1):

function generateValidPhoneNumber() {
  // 首位固定为1,后续拼接10位随机数字
  return '1' + generateRandomDigits(10);
}

3. 修改测试脚本中的手机号调用

将原有的手机号生成代码替换为新函数:

// 替换之前的 signupPage.enterPhoneNumber(makeid(8)+ "82090808070")
signupPage.enterPhoneNumber(generateValidPhoneNumber())

4. 可选:优化函数复用性

把所有随机生成函数提取到单独的工具文件(如utils.js),方便多测试用例调用:

// utils.js
export function generateRandomDigits(length) {
  let result = '';
  const digits = '0123456789';
  for (let i = 0; i < length; i++) {
    result += digits.charAt(Math.floor(Math.random() * digits.length));
  }
  return result;
}

export function generateValidPhoneNumber() {
  return '1' + generateRandomDigits(10);
}

export function makeid(length) {
  let result = '';
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  for (let i = 0; i < length; i++) {
    result += characters.charAt(Math.floor(Math.random() * characters.length));
  }
  return result;
}

在测试脚本中导入使用:

import { SignupPage } from "./pages/signup_page";
import { makeid, generateValidPhoneNumber } from "./utils";

5. 验证输入框定位准确性

如果修复后仍无效,检查手机号输入框的选择器:nth-child(5) > .relative > .w-full是否准确,建议使用更稳定的选择器(如基于placeholder或name属性):

// 修改SignupPage类中的enterPhoneNumber方法
enterPhoneNumber(phoneNumber){
  // 示例:使用placeholder定位
  cy.get('[placeholder="Phone Number"]').type(phoneNumber);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:36:01