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

Cypress 10中如何校验下拉列表元素是否按字母/数字规则排序

Cypress 10 下拉列表排序校验实现方案

一、通用排序规则校验(字母/数值顺序)

核心逻辑是先提取所有下拉选项的实际展示文本,再根据排序规则生成基准排序数组,最后对比两个数组是否完全一致。

  • 字母顺序校验:支持适配中文拼音、英文大小写忽略等场景,用localeCompare做本地化排序对比
  • 数值顺序校验:提取选项中的数值转成数字类型后做排序对比

可直接复用的代码片段:

// 打开下拉后执行校验,将选择器替换为项目实际的下拉选项选择器,如组件库的.ant-select-item、.el-select-dropdown__item等
cy.get('替换为你的下拉选项DOM选择器').then($options => {
  // 提取所有选项的实际展示文本,去除首尾无效空格
  const actualOptionList = [...$options].map(item => item.textContent.trim())

  // 1. 字母升序校验(不区分大小写,适配中文拼音排序)
  const expectedAlphabetList = [...actualOptionList].sort((a, b) => 
    a.localeCompare(b, 'zh-CN', { sensitivity: 'base' })
  )
  expect(actualOptionList).to.deep.equal(expectedAlphabetList, '下拉选项未按字母规则排序')

  // 2. 数值升序校验(适配纯数字选项场景)
  const expectedNumberList = [...actualOptionList].sort((a, b) => Number(a) - Number(b))
  expect(actualOptionList).to.deep.equal(expectedNumberList, '下拉选项未按数值规则排序')
})

注意:如果需要校验降序,只需把sort方法里的对比参数a、b互换即可

二、指定位数数字规则排序校验实现

对应需要按选项中固定长度数字片段排序的场景,例如下拉选项带固定长度工号、编码需要按编码数值排序的场景:
下拉列表示例截图

实现步骤:

  • 提前确认指定位数数字的匹配规则:比如是文本开头的N位数字、还是文本中任意位置的连续N位数字
  • 遍历所有选项,从文本中提取符合长度要求的数字片段,转成数值类型作为排序依据
  • 基于提取的排序key生成基准排序数组,和实际提取的选项数组做全等对比

可直接复用的代码片段:

cy.get('替换为你的下拉选项DOM选择器').then($options => {
  const actualOptionList = [...$options].map(item => item.textContent.trim())
  // 按实际需求修改指定位数,示例为匹配连续6位数字
  const TARGET_DIGIT_LEN = 6
  const digitMatchReg = new RegExp(`\\d{${TARGET_DIGIT_LEN}}`)

  // 从选项文本中提取指定位数数字作为排序key
  const getSortKey = (text) => {
    const matchResult = text.match(digitMatchReg)
    if (!matchResult) throw new Error(`选项「${text}」中未找到${TARGET_DIGIT_LEN}位有效数字,无法执行排序校验`)
    return Number(matchResult[0])
  }

  // 生成按指定位数数字升序的基准数组
  const expectedSortList = [...actualOptionList].sort((a, b) => getSortKey(a) - getSortKey(b))
  expect(actualOptionList).to.deep.equal(expectedSortList, `下拉选项未按${TARGET_DIGIT_LEN}位数字规则排序`)
})

注意:如果下拉用了虚拟滚动,一定要先滚动下拉列表到底部,加载完全部选项后再执行提取逻辑,否则会漏判数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:30:35