我有10个相同类的元素(' botaoParametroAc')我想逐个检查并点击包含" id"的元素。作为文字。这是我现在的代码:
browser
.waitForElementVisible('#txtBusca', 4000)
.elements('class name', 'botaoParametroAc', function(res) {
for(var item in res.value){
console.log(item.text)
}
});
它正在返回" undefined"对于每个项目。
当我尝试打印res.value时,结果是:
{" ELEMENT":" 0.06577812833436414-2"} {" ELEMENT":" 0.06577812833436414-3"} {" ELEMENT":" 0.06577812833436414-4"} {" ELEMENT":" 0.06577812833436414-5"} {" ELEMENT":" 0.06577812833436414-6"} {" ELEMENT":" 0.06577812833436414-7"} {" ELEMENT":" 0.06577812833436414-8"} {" ELEMENT":" 0.06577812833436414-9"} {" ELEMENT":" 0.06577812833436414-10"}
如何获取每个元素的文本或属性?!
答案 0 :(得分:0)
只是要更新,它现在正在运作。我需要获取每个元素的elementIdAttribute获取innerText以发现它,并在条件匹配时单击它。
browser
.waitForElementVisible('#txtBusca', 4000)
.elements('class name', 'botaoParametroAc', function(result) {
result.value.map(function(element, err) {
browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
if (res.value == 'id') {
browser.elementIdClick(element.ELEMENT);
}
})
})
})
答案 1 :(得分:0)
对我来说,使用elements + elementIdAttribute效果不佳。
我所做的是使用execute():
'Verify table summary': function (browser) {
browser.execute(function (data) {
var innerTotal = 0;
document.querySelectorAll('.cell-with-number')
.forEach(a => innerTotal += Number(a.innerText));
return innerTotal;
}, [], function(res) {
total = res.value;
});
var total
将从脚本返回的值在浏览器的上下文中运行。
答案 2 :(得分:0)
从当前的 nightwatch 版本 (1.7.6) 开始,以与 Chromedriver 和 Geckodriver 兼容的方式执行此操作的最简单方法是使用 getElementProperty:
browser.getElementProperty('#thisElementId .some-class-name', 'innerText',
function(result) {
console.log('result', result);
}
);