如何从Protractor中的browser.wait()返回ElementFinder?

时间:2017-01-04 11:03:40

标签: javascript angularjs protractor

在我的测试用例中,我试图在返回一些项之前为check元素数组实现helper。如果数组不包含元素 - 我需要等待(我在应用程序性能方面遇到一些麻烦,有时列表中的元素加载太长而同步不起作用)。

我帮手的功能:

getElementFromArray(array, elementIndex) {
    return browser.wait(() => {
        return array.count((count) => {
            return count > elementIndex;
        });
    }, 10000).then(() => {
        return array.get(elementIndex);
    }, () => {
        console.log("Element in array does not exist.");
        return null;
    })
}

然后我用它:

let row = helper.getElementFromArray(rowsCatalog, indexRow);
row.getText();

但我收到错误,因为browser.wait()会返回ManagedPromise而不是ElementFinder

我真的不想使用helpers函数作为promises,因为它会使代码非常复杂且难以理解(上面的例子 - 最简单的情况)。

1 个答案:

答案 0 :(得分:0)

不确定这是否适用于您的情况,但您可以在browser.wait()之后返回:

getElementFromArray(array, elementIndex) {
    browser.wait(() => {
        return array.count((count) => {
            return count > elementIndex;
        });
    }, 10000);

    return array.get(elementIndex);
}