在 JavaScript 中检索值并在之后执行加法 想要 return 赛普拉斯自动化中 for 循环之后的值?

In JavaScript, retrieve the value and performed the addition after that want to return the value after the for loop in cypress automation?

verifyActiveInterfacesViaConnectionStatus() {
        var sum = 0
        var i;
        for (i = 1; i <= 5; i++) {
            cy.xpath(`(//*[name()='g' and @class ='highcharts-label highcharts-data-label highcharts-data-label-color-undefined']//*[name()='text']//*[@class='highcharts-text-outline'])[${i}]`).invoke("text").then(($text1) => {

               var textValue1 = $text1 + "\n"
               cy.log(textValue1)
               var  total = parseInt(textValue1)
               sum += total
            })
        }
        cy.log("Total of all connected OS= " + sum)
    }

在 cypress 自动化中,当我 运行 这段代码返回 sum=0 但我不知道为什么它显示 0。请帮帮我。

Cypress 命令是异步的。 cy.log 在第一个 xpath 命令真正执行之前 捕获 sum 值。 要同步对 sum 的访问,您可以使用 then 回调:

verifyActiveInterfacesViaConnectionStatus() {
        var sum = 0
        var i;
        for (i = 1; i <= 5; i++) {
            cy.xpath(`(//*[name()='g' and @class ='highcharts-label highcharts-data-label highcharts-data-label-color-undefined']//*[name()='text']//*[@class='highcharts-text-outline'])[${i}]`).invoke("text").then(($text1) => {

               var textValue1 = $text1 + "\n"
               cy.log(textValue1)
               var  total = parseInt(textValue1)
               sum += total
            })
        }
        cy.then(() => {
           cy.log("Total of all connected OS= " + sum)
        })
    }

查看 this article 了解有关如何在赛普拉斯处理变量的详细信息。