当前位置: 首页 > 知识库问答 >
问题:

使用量角器和TypeScript,如何根据该列的标题文本返回网格的列索引?

何海
2023-03-14

我正在尝试编写一个函数,它将返回一个网格的列索引,基于该列的标题文本。我做了很多尝试,这些尝试出现在下面的评论中。最后,该函数总是返回-1,而不是预期的列索引。使用WebStorm调试器,我已经能够验证进入函数的参数正在被填充。

此外,你可以看到我的一个尝试,通过CSS选择器,这是一个绝望的方法。

public getColumnIndexByHeaderText(gridId: string, headerText: string): number {
    var GRID_HEADER_REPEATER: string = 'col in colContainer.renderedColumns track by col.uid';
    var columnIndex: number = -1;

    // Attempt A
    element(by.id(gridId)).all(by.repeater(GRID_HEADER_REPEATER)).getText().then(function (textArray) {
        columnIndex = textArray.indexOf(headerText);
    });

    // Attempt B
    element(by.id(gridId)).then(function (grid) {
        grid.all(by.repeater(GRID_HEADER_REPEATER)).getText().then(function (textArray) {
            columnIndex = textArray.indexOf(headerText);
        });
    });

    // Attempt C
    element.all(by.repeater(GRID_HEADER_REPEATER)).filter(function (elm, index) {
        return elm.getText().then(function (text) {
            if (text === headerText) {
                return index;
            }
        });
    });

    // Attempt D
    var cssSelector = '#' + gridId + ' .ui-grid-header span.ng-binding';
    element.all(by.css(cssSelector)).getText().then(function (textArray) {
        columnIndex = textArray.indexOf(headerText);
    });

    return columnIndex;
};

我尝试过的其他方法(此处未显示)也失败了。感觉我只是忽略了一些基本的东西。感谢您的帮助。

共有1个答案

阎德宇
2023-03-14

他与一位同事合作,指出了我上述方法的几个突出问题。他能够解决以下问题:

首先,返回promise而不是数字所需的函数签名。注意返回类型和返回语句。

public getIndexByHeaderText(gridId: string, headerText: string): protractor.promise.Promise<number> {
    var GRID_HEADER_REPEATER: string = 'col in colContainer.renderedColumns track by col.uid';
    return element(by.id(gridId)).all(by.repeater(GRID_HEADER_REPEATER)).getText().then(function (textArray) {
        return textArray.indexOf(headerText);
    });
};

其次,对该函数的调用需要将其视为一个promise,并通过then函数语法来分配返回值,就像这样。

it('Should do something', function() {
    lib.grid.getRow.byRowIdentifier(page.GRID_ID, newUserEmailPrefix, 'name').then(function (gridReturnObject) {
        lib.grid.column.getIndexByHeaderText(page.GRID_ID, 'Header Text').then(function (columnIndex) {
            var deactivateButtonCell = gridReturnObject.rowCellElements[columnIndex];
            // Other code omitted for clarity...
        });
    });
});
 类似资料:
  • 问题内容: 对于这个有争议的问题,我无法得到明确的答案。 MSDN文档中提到 聚类 聚集索引根据它们的键值对数据行进行 排序 并将其存储在表或视图中。这些是索引定义中包括的列。只能有一个每个表的聚集索引,因为数据行本身可以 进行排序 在只有一个订单。 表中的数据行唯一 按排序 顺序存储的时间是表包含聚簇索引时。当表具有聚簇索引时,该表称为聚簇表。如果表没有聚集索引,则其数据行将存储在称为堆的无序结

  • 问题内容: 这个问题已经在这里有了答案 : SELECT查询是否总是以相同顺序返回行?具有聚集索引的表 (1个答案) 6年前关闭。 对于这个有争议的问题,我无法得到明确的答案。 MSDN文档中提到 聚类 聚集索引根据它们的键值对数据行进行 排序 并将其存储在表或视图中。这些是索引定义中包括的列。只能有一个每个表的聚集索引,因为数据行本身可以 进行排序 在只有一个订单。 表中的数据行唯一 按排序 顺

  • 我有一个python数据框,我使用以下代码将其粘贴到excel工作表中: df.to_excel(作家,列=[周刊,周刊1,周刊2],sheet_name='QTY SLS',启动=5,启动=8,头=假,索引=假) 在数据帧weeknum、Weeknum1和Weeknum2中选择的列是代码前面的输入(例如weeknum=第14周)。因此,这些可能是[‘第16周’、‘第15周’、‘第14周’]作为一

  • 问题内容: 我需要对列表进行排序,然后返回带有列表中已排序项目索引的列表。例如,如果我要排序的列表是,则需要返回。 这个问题以字节为单位发布,但我认为我会在这里重新发布。 http://bytes.com/topic/python/answers/44513-sorting-list-then-return-index- sorted-item 我的具体需求是根据对象的属性对对象列表进行排序。然后

  • 我看了那篇文章,https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory并创建了应用程序角色 以下endpoint使用用户角色进行授权 我想引入一个额外的Getendpoint来返回

  • 我有几个谷歌表,我连接和更新他们之间的单元格。现在,我必须使用R1C1或A1类型引用来定义基于特定列的获取或设置单元格。 如果添加了新列,所有这些引用现在都将关闭。 每个工作表的第一行都有列标题作为这些单元格中的值。 我能否以[columnHeader]5等格式引用该列第五行中的单元格? 我曾想过将每个单独的列标题设置为“命名范围”,但我一直无法使用[named range]5引用单元格。 我想我