微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

守夜人计数元素数

如何解决守夜人计数元素数

我是 Nightwatch 的新手,我想计算元素的数量。我能够做到这一点,但我不明白如何解释变量,这里是我的代码

browser.elements('xpath','/html/body/div[1]/div[3]/div[2]/div/div[1]/div/div[3]/table/tbody/tr/td[2]',function (elements) {
                var nb = 0    
                elements.value.forEach(function (elementsObj,index) {   
                    browser.elementIdText(elementsObj.ELEMENT,function (result) {
                        if (result.value != "") {
                            nb = nb + 1
                            console.log(result.value)
                        }
                        //console.log("There are :  "  + nb)
                    })
                    //console.log("There are :  "  + nb)
                })

这会显示我想要的所有元素。输出是: 元素 1 元素 2 等等……

现在,我想要这个:

有X个元素: 元素 1 元素 2 等等……

但是我尝试打印我的变量“nb”但它不起作用......我如何存储和显示我的“nb”变量?

谢谢,

解决方法

我的猜测是那些没有评论的评论 console.log 在你的循环结束之前执行......因此它们很可能会返回: “有:0”

您是否尝试过“等待” forEach 循环结束?

也许是这样的:

browser.elements('xpath','/html/body/div[1]/div[3]/div[2]/div/div[1]/div/div[3]/table/tbody/tr/td[2]',function (elements) {
                var nb = 0    
                elements.value.forEach(async function (elementsObj,index) {   
                   await browser.elementIdText(elementsObj.ELEMENT,function (result) {
                        if (result.value != "") {
                            nb = nb + 1
                            console.log(result.value)
                        }
                        //console.log("There are :  "  + nb)
                    })
                    console.log("There are :  "  + nb)
                })
,

您可以将值存储在数组中。然后在forEach循环完成后解析长度。像这样:

browser.elements('xpath',function (elements) {
     var nb = []
     elements.value.forEach(function (elementsObj,index) {
       browser.elementIdText(elementsObj.ELEMENT,function (result) {
         if (result.value != "") {
           console.log(result.value)
           nb.push(result.value)
         }
       })
     })
     console.log('There are ' + nb.length() + 'elements')
     for (const nbItem of nb) {
       console.log(nbItem)
     }
   })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。