我需要遍历一组标记,这些标记有一个特定的类与它们关联,并且有一个值

    <div class="ratinglabel col-6">
        <label>Area 1: Professional Engagement 
            <span test-data="area_1_Scor">
                (4/16)
            </span>
        </label>
    </div>

我想找到(4/16*5)并将它们保存在var中,以便与另一个值进行比较

我做到了:

    cy.get('[test-data="area_1_Scor"]', { timeout: 2000 })
    .then(function($ele) {   
      var countOfElements = $ele*5;
      cy.log(countOfElements);
    });
  })

   cy.get('[test-data="area_1_Scor"]').each(($li, index, $lis) => {
      var sum = 0;
      Cypress.$('[test-data="area_1_Scor"]').each(function() {
        sum = +Cypress.$(this).text()*5||0;
      });
      cy.log("Total sum of all span elements:"+sum);
      
      })

but log appear as NaN in first case 和 0 in second So how can i do it ?

推荐答案

就快到了(第一块),但需要1)从元素中提取文本,2)将文本解析为数字

cy.get('[test-data="area_1_Scor"]', { timeout: 2000 })
  .invoke('text')
  .then(text => {
    const numerator = +text.split('/')[0].replace('(', '')
    const denominator = +text.split('/')[1].replace(')', '')
    const countOfElements = numerator * 5 / denominator;
    cy.log(countOfElements);
  });
})

你的第二个方块表示有多个元素,如果是的话,用.each()个这样的元素

let sum = 0;
cy.get('[test-data="area_1_Scor"]', {timeout: 2000})
  .each($el => {

    cy.wrap($el).invoke('text')
      .then(text => {
        const numerator = +text.split('/')[0].replace('(', '')
        const denominator = +text.split('/')[1].replace(')', '')
        const countOfElements = numerator * 5 / denominator;
        sum += countOfElements
      }) 
  })
})
.then(() => cy.log(sum))

To test the math

const times5 = (text) => {
  const numerator = +text.split('/')[0].replace('(', '')
  const denominator = +text.split('/')[1].replace(')', '')
  return Math.round(numerator * 5 / denominator)
}

let sum = 0;
cy.get('[test-data="area_1_Scor"]', {timeout: 2000})
  .each($el => {
    cy.wrap($el).invoke('text')
      .then(times5)                   // text is passed in automatically
      .then(result => sum += result)
  })
})
.then(() => cy.log(sum))

所以你可以用

cy.log(times5("(4/16)"))   

Node.js相关问答推荐

Stripe webhook无法访问Express请求原始正文

如何在JavaScript中使用Mongoose将项推送到MongoDB中的重嵌套数组

将文件传递到 AWS lambdas(nodejs) + API 网关后重新上传文件

WSL2 上需要脚本运行的 NPM 包的权限被拒绝

为什么我的react 表单不能正常工作?

根据 mongoDB 中存在的唯一字符串生成唯一字符串的最佳方法

无法通过谷歌Electron 表格 api( node js)中的服务帐户访问写入

在 gatsby 中安装软件包时不推荐使用的错误

等到文件上传完成的有效方法(mongoose )

使用新react 18.0.0 的 create-react-app my-app redux 错误

与 NPM 一起安装时找不到 Express 模块

如何使用适用于 Node.js 的 AWS 开发工具包将 Amazon S3 中的所有对象从一个前缀复制/移动到另一个前缀

Node_redis - 如何删除密钥?

添加git信息到create-react-app

如何在 Node.js 中等待子进程完成

Fluxible 中的脱水和再水合代表什么?

将 NodeJS 用于大型项目

如何在express 中设置默认路径(路由前缀)?

在 Node.js 上使用 Connect 无法获取 /

为什么 Node.js 没有原生 DOM?