无法迭代 ElementArrayFinder
Unable to iterate over an ElementArrayFinder
我是使用 Protractor 编写 e2e Javascript 测试的初学者。我一直在尝试识别一组元素,这些元素具有与之关联的文本 属性 。我可以使用
来定位他们
groupedNodeNumbers : ElementArrayFinder;
this.groupedNodeNumbers = this.element.all(by.css(".side-label-background + .side-label"));
这应该会给我一个元素数组,我可以在这些元素上调用 getText() 来提取与每个元素关联的值。
validateCountGraphNodes = async() => {
let count = 0;
console.log('Inside')
this.groupedNodeNumbers.each((groupedNodeElement) => {
groupedNodeElement.getText().then((num) => {
console.log('Inside loop')
count += parseInt(num, 10);
console.log(count);
});
});
}`
我可以记录 ('Inside') 但不能 ('Inside Loop'),因此我的函数无法检索与每个元素关联的文本。
有人可以指出我哪里出错了吗?
由于 getText()
应用了 returns 字符串而不是字符串数组(现有问题),您可以尝试以下操作:
const cssSelector = ".side-label-background + .side-label";
$$(cssSelector).getText().then(textArrNotArr => {
for(let i = 0; i< textArrNotArr.lenght; i++) {
console.log('arr[i] = ', textArrNotArr[i]);
}
});
或
$$(cssSelector).count().then(elFinderArray => {
elFinderArray.forEach(elFinder => {
elFinder.getText().then((txt, index) => {
console.log(index);
});
});
});
注意:$$('cssSelector')
可以代替element.all(by.css('cssSelector'))
我是使用 Protractor 编写 e2e Javascript 测试的初学者。我一直在尝试识别一组元素,这些元素具有与之关联的文本 属性 。我可以使用
来定位他们groupedNodeNumbers : ElementArrayFinder;
this.groupedNodeNumbers = this.element.all(by.css(".side-label-background + .side-label"));
这应该会给我一个元素数组,我可以在这些元素上调用 getText() 来提取与每个元素关联的值。
validateCountGraphNodes = async() => {
let count = 0;
console.log('Inside')
this.groupedNodeNumbers.each((groupedNodeElement) => {
groupedNodeElement.getText().then((num) => {
console.log('Inside loop')
count += parseInt(num, 10);
console.log(count);
});
});
}`
我可以记录 ('Inside') 但不能 ('Inside Loop'),因此我的函数无法检索与每个元素关联的文本。
有人可以指出我哪里出错了吗?
由于 getText()
应用了 returns 字符串而不是字符串数组(现有问题),您可以尝试以下操作:
const cssSelector = ".side-label-background + .side-label";
$$(cssSelector).getText().then(textArrNotArr => {
for(let i = 0; i< textArrNotArr.lenght; i++) {
console.log('arr[i] = ', textArrNotArr[i]);
}
});
或
$$(cssSelector).count().then(elFinderArray => {
elFinderArray.forEach(elFinder => {
elFinder.getText().then((txt, index) => {
console.log(index);
});
});
});
注意:$$('cssSelector')
可以代替element.all(by.css('cssSelector'))