【问题标题】:Not able to get the values of a sorted ag-grid column in an array using Protractor and Typescript无法使用 Protractor 和 Typescript 获取数组中已排序的 ag-grid 列的值
【发布时间】:2018-08-02 11:16:57
【问题描述】:

我必须在 ag-grid 中验证排序功能。 打开 UI 时,列数据将按某种顺序排列。
我将它按升序排序,然后将值存储在一个数组中。

ag_grid_utils.clickOnHeader("Name");
var testArr=[];
element.all(by.css('div.ag-body-container div[col-id="Name"]'))
    .map(function (Element) {
        element.getText().then(function (result) {
        console.log("result :: "+result);
        testArr.push(result);
    });
})

但是,当我打印数组时,这些值没有排序。它们的顺序与我第一次打开 UI 时的顺序相同。

点击标题后我还添加了 sleep 语句以验证 UI 中的排序。
我有什么遗漏吗? 提前致谢。

【问题讨论】:

标签: typescript protractor ag-grid


【解决方案1】:

因为 ag-Grid 按 CSS 而不是 HTML Node Position 显示排序的行。

从上面的截图我们可以看到Amelia Cage是排序后的第一行,但是该行的HTML节点不是表体的第一个childNode,而是表体的最后2个childNode。

我们还可以看到这一行集合top: 0pxcss/style,这意味着这一行position Y相对于表体是0,这就是为什么这一行显示为第一行,即使它的HTML节点位置不是首先。

但是element.all() 返回元素的顺序是它们的 HTML 节点位置,所以你的 testArr[] 在 HTML DOM 树中获取与 HTML 节点位置相同的顺序,而不是在页面上显示顺序。

选项 1) 通过属性row-indexelement.all() 的元素进行排序,然后检查有序数组的文本是否有顺序。 (row-index 更大,行更靠近尾部)

选项 2)element.all() 的元素按top: yyypx 排序,然后检查有序数组的文本是否有顺序。 (yyy 更大,行更靠近尾部)

【讨论】:

  • 谢谢 Yong。我可以通过以下方式获取值:div.ag-body-container div[ row-index='4''] > [col-id='Name']跨度>
猜你喜欢
  • 2018-08-01
  • 2021-01-24
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 2016-06-19
  • 2020-12-16
  • 2018-07-17
相关资源
最近更新 更多