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

如何修改Cypress断言实现下拉列表指定值全量校验?

解决Cypress下拉列表全量值校验问题

原代码的逻辑是验证下拉中的每个选项都属于指定值集合,但你需要的是验证指定值集合中的每一个值都存在于下拉列表,两者逻辑完全相反,这就是为什么修改不存在的值后断言仍通过的原因。

修改后的代码实现

export function check_f_e_Script_History_Status() {
  // 定义需要校验的所有目标状态文本
  const expectedStatuses = [
    '0 Undefined',
    '1 (Pending)',
    '2 (Sent)',
    '3 (Deployed)',
    '4 (Failed - will retry)',
    '5 (Failed - will not retry)',
    '6 (Reverted)',
    '7 (Deprecated)'
  ];

  // 获取下拉列表的所有选项文本,整理成数组
  cy.get('#emvScriptHistory > .ng-isolate-scope > .panel > :nth-child(1) > .form-horizontal > .form-group > :nth-child(2) > .form-control')
    .find('option') // 下拉列表选项通常为option元素,替换原注释的button定位
    .invoke('text')
    .then(optionTexts => {
      // 处理文本格式,去除换行、空格并过滤空值
      const actualStatuses = optionTexts.split('\n')
        .map(text => text.trim())
        .filter(text => text.length > 0);

      // 遍历每个预期值,断言其必存在于实际选项中
      expectedStatuses.forEach(status => {
        expect(actualStatuses).to.include(status);
      });
    });
}

关键修改点说明

  • 逻辑反转:从校验「每个选项都属于预期集合」,改为校验「每个预期值都存在于选项集合」,完全匹配你的需求
  • 元素定位修正:下拉列表的可选项一般是option标签,替换原代码中注释的button定位,确保获取正确的选项元素
  • 文本格式处理:通过分割换行、去除首尾空格、过滤空值,避免因渲染格式差异导致的断言误判
  • 全量校验触发:遍历预期值列表逐个断言,只要有一个值不存在就会直接触发断言失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:22:09