首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在柏树试验中进行计算

如何在柏树试验中进行计算
EN

Stack Overflow用户
提问于 2022-04-27 07:00:20
回答 1查看 410关注 0票数 2

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

代码语言:javascript
复制
    <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中,以便将它们与另一个值进行比较。

我做了这个:

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

代码语言:javascript
复制
   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);
      
      })

但是,日志在第一种情况下以NaN的形式出现,而在第二种情况下为0,那么我怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-27 07:24:12

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

代码语言:javascript
复制
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()

代码语言:javascript
复制
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))

测试数学

代码语言:javascript
复制
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))

这样,您就可以用

代码语言:javascript
复制
cy.log(times5("(4/16)"))   
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72024539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档