javascript - 如何在 Protractor 中从 browser.wait() 返回 ElementFinder?

标签 javascript angularjs protractor

在我的测试用例中,我尝试实现助手,以在返回某些项目之前检查元素数组。如果数组不包含元素 - 我需要等待(我在应用程序性能方面遇到一些麻烦,有时列表中的元素加载太长并且同步不起作用)。

我的助手中的功能:

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

我真的不想使用辅助函数作为 Promise,因为它会让代码变得非常复杂且不可读(上面的例子 - 最简单的情况)。

最佳答案

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

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

    return array.get(elementIndex);
}

关于javascript - 如何在 Protractor 中从 browser.wait() 返回 ElementFinder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41462263/

相关文章:

javascript - ES6 从构造函数调用值

javascript - JQuery:按顺序追加到?

AngularJS - 根据 ng-repeat 中的项目数量显示/隐藏

angularjs - Protractor 测试失败,因为添加 ng-if 指令后出现 ElementNotVisibleError

javascript - onCleanUp() vs onComplete() vs afterLaunch()

javascript - 如何通过 jQueryUI AJAX 加载 AngularJS 内容?

javascript - 为什么 HighStock 范围选择器中有禁用按钮?

javascript - 如何将 ng-model 的引用作为函数的参数传递?

asp.net-mvc - 使用 Angular VS Razor 进行 ASP.Net MVC 验证

javascript - 如何保持 Protractor 运行?