如何使用 Nightwatch 获取元素 text/value/innertext?
How to get element text/value/innertext using Nightwatch?
我有 10 个具有相同 class ('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"}
如何获取每个元素的文本或属性?!
只是为了更新,它现在正在工作。我需要为每个获取 innerText 的元素获取 elementIdAttribute 以发现它并在条件匹配时单击它。
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);
}
})
})
})
对我来说,使用 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
将具有从浏览器上下文中的脚本 运行 返回的值。
从当前的 nightwatch 版本 (1.7.6) 开始,与 Chromedriver 和 Geckodriver 兼容的最简单方法似乎是 getElementProperty:
browser.getElementProperty('#thisElementId .some-class-name', 'innerText',
function(result) {
console.log('result', result);
}
);
我有 10 个具有相同 class ('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"}
如何获取每个元素的文本或属性?!
只是为了更新,它现在正在工作。我需要为每个获取 innerText 的元素获取 elementIdAttribute 以发现它并在条件匹配时单击它。
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);
}
})
})
})
对我来说,使用 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
将具有从浏览器上下文中的脚本 运行 返回的值。
从当前的 nightwatch 版本 (1.7.6) 开始,与 Chromedriver 和 Geckodriver 兼容的最简单方法似乎是 getElementProperty:
browser.getElementProperty('#thisElementId .some-class-name', 'innerText',
function(result) {
console.log('result', result);
}
);