0

我是 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”变量?

谢谢,

4

2 回答 2

0

我的猜测是那些没有评论的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)
                })
于 2021-03-04T20:47:52.380 回答
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 = []
     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)
     }
   })
于 2021-07-07T15:31:27.020 回答