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

如何对动态可选元素取值求和验证结果,并提取纯数字

动态元素数值相加验证方案

1. 提取文本中的数字

首先需要从元素文本中剥离出纯数字,这里可以用正则表达式过滤非数字字符,再转换为数值类型:

// 通用数字提取函数
const extractNumber = (text) => {
  // 保留数字和小数点,适配整数/浮点数
  const numStr = text.replace(/[^0-9.]/g, '');
  // 空文本返回0,避免NaN
  return numStr ? Number(numStr) : 0;
};

2. 处理动态元素的存在性

针对A、B元素可能不显示的情况,不要直接用cy.get()(元素不存在会直接报错),而是通过cy.get('body').then()获取页面容器后,用jQuery的find()方法判断元素是否存在:

cy.get('body').then(($body) => {
  let calculatedTotal = 0;

  // 检查A元素是否存在,存在则累加数值
  const $aElement = $body.find('[data-cy="A-element-selector"] > span');
  if ($aElement.length) {
    calculatedTotal += extractNumber($aElement.text());
  }

  // 检查B元素是否存在,存在则累加数值
  const $bElement = $body.find('[data-cy="B-element-selector"] > span');
  if ($bElement.length) {
    calculatedTotal += extractNumber($bElement.text());
  }

  // 获取结果元素的数值并验证
  cy.get('[data-cy="sum-element-selector"] > span')
    .invoke('text')
    .then((sumText) => {
      const actualSum = extractNumber(sumText);
      expect(calculatedTotal).to.equal(actualSum);
    });
});

3. 适配你的选择器场景

如果你的三个元素共用同一个data-cy属性,可以通过文本标识区分(比如A元素含"A:"、结果元素含"总和:"),调整代码如下:

const extractNumber = (text) => {
  const numStr = text.replace(/[^0-9.]/g, '');
  return numStr ? Number(numStr) : 0;
};

cy.get('body').then(($body) => {
  let calculatedTotal = 0;
  const targetCells = $body.find('[data-cy="Selected in Final InterviewofferBreakUpTableBodyCellRenderer"] > span');

  // 遍历所有目标单元格,累加A、B的数值
  targetCells.each((index, element) => {
    const cellText = Cypress.$(element).text();
    if (cellText.includes('A:') || cellText.includes('B:')) { // 根据实际文本标识调整
      calculatedTotal += extractNumber(cellText);
    }
  });

  // 找到结果单元格并验证
  targetCells.filter(':contains("总和:")') // 替换为实际结果文本标识
    .invoke('text')
    .then((sumText) => {
      const actualSum = extractNumber(sumText);
      expect(calculatedTotal).to.equal(actualSum);
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:45:33