无法使用Protractor和Typescript获取数组中已排序的ag-grid列的值

时间:2018-02-22 14:43:58

标签: typescript protractor ag-grid

我必须在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中的排序。
我有什么遗失的吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

因为ag-Grid显示按 CSS 排序的行,而不是HTML 节点位置
enter image description here

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

此外,我们可以看到此行集css/style的{​​{1}},这意味着此行top: 0px相对于表格正在position Y,这就是为什么这一行显示为第一行,即使其HTML节点位置也不是第一行。

但是0按照HTML节点的位置返回元素,所以你的 element.all()与HTML DOM树中的HTML节点位置的顺序相同,而不是在页面上显示顺序。

选项1)按属性testArr[]订购element.all()的元素,然后检查有序数组的文本是否有订单。 (row-index更大,更靠近尾部排列

选项2)row-index排序element.all()的元素,然后检查有序数组的文本是否有订单。 (top: yyypx更大,更靠近尾部排列