我必须在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中的排序。
我有什么遗失的吗?
提前谢谢。
答案 0 :(得分:1)
因为ag-Grid显示按 CSS 排序的行,而不是HTML 节点位置。
从上面的屏幕截图中,我们可以看到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
更大,更靠近尾部排列