如何解决守夜人计数元素数
我是 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 举报,一经查实,本站将立刻删除。