2016-11-14 67 views
0

在用于UI网格量角器E2E测试,我使用的函数DATACELL(gridId,fetchRow,fetchCol),这已在ui.grid.e2eTestLibrary.api提供了:gridTest,量角器E2E测试角UI网格单元填充

来源: - https://github.com/angular-ui/ui-grid/tree/master/test/e2e

dataCell: function(gridId, fetchRow, fetchCol) { 
var row = this.getGrid(gridId).element(by.css('.ui-grid-render-container-body')).element(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index').row(fetchRow) ); 
return row.element(by.repeater('(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name').row(fetchCol));} 

它在注释部分明确提到,该DATACELL(fetchRow,fetchColumn)必须是可见的页面,用于访问数据单元,并填满它。

@param {string}里gridId要检查

@param {整数冲电网的id fetchRow行的,你想要回号码(可见行内)

@param {整数冲fetchCol山坳 要返回

数(可见的cols内)

我有一个大的UI电网(约100行〜50列),所以所有的行和列是不可见的。因此,为了使它们可见在页面中通过量角器自动化测试,我已经修改DATACELL()的代码如下: -

dataCell: function(gridId, fetchRow, fetchCol) { 

var row = this.getGrid(gridId).element(by.css('.ui-grid-render-container-body')).element(by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index').row(fetchRow) ); 
browser.executeScript("arguments[0].scrollIntoView(true);", row.getWebElement()); 

return row.element(by.repeater('(colRenderIndex, col) in colContainer.renderedColumns track by col.uid').row(fetchCol)); 

},

在此之后,它应该滚动到适当的单元格,然后选择它并相应地进行编辑。

但是,这我收到DATACELL,是可点击(),但是当我用该方法给出的输入: -

cell.element(by.css("input")).sendKeys("Data to be filled"); 

量角器是越来越坠毁,并表示这是显示错误如下: -

Failed: No element found using locator: By(css selector, input). 

请建议一种方法,在UI网格中编辑网格单元格,这些网格单元格通过适当的滚动不可见。

采取Addtional操作: -

我用渲染的行和列,在创建UI电网的开发代码增加virtualizationThreshold和columnvirtualizationThreshold值的一种变通方法。单元格正确定位,虽然它现在触及性能问题。 RAM和交换正在被自动化过程完全消耗掉,随后这个过程变得太慢了。有没有解决内存性能问题的方法?

回答

0

虚拟化数据的自动e2e测试很难。要找到它,它必须在DOM中,才能进入DOM,您必须滚动到它。因此,您需要在循环中使用您的查找器:find/scroll/find/scroll;只有当你匹配或用完时才会滚动。希望我错了,但我没有看到ui.grid.e2eTestLibrary.api中的任何东西:gridTest这样做。