量角器根据条件单击嵌套元素,错误 - 在指定的超时内未调用异步回调

Protractor clicking nested elements based on a condition, error - Async callback was not invoked within timeout specified

本文关键字:超时 回调 异步 调用 条件 单击 嵌套 错误 元素 量角器      更新时间:2023-09-26

我正在尝试为我们在应用程序中使用的可重用 UI 控件之一创建一个页面对象,这是一个包含一堆标题( th ) 的表,带有要过滤的按钮。我想单击特定th元素的按钮。这是我的代码

this.gridAllColumns = browser.element(by.css('[grid-service=envGridService]')).all(by.tagName('th'));
this.filterColumn = function(columnName){
    gridAllColumns.each(function(element){
        var text = element.getText();
        if( text = columnName){
            console.log(text);
            var buttonElement = element.element(by.tagName('button'));
            buttonElement.click();
        }
    });
}

我收到以下错误

错误:超时 - 在超时内未调用异步回调 指定

我做错了什么?有人可以指出我正确的方向吗?

您需要使用 this 引用gridAllColumns,并且需要使用filter()

this.filterColumn = function(columnName) {
    this.gridAllColumns.filter(function(header) {
        return header.getText().then(function (headerText) {
            return headerText === columnName;
        });
    }).first().element(by.tagName('button')).click();
}