无法迭代 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'))