[英]Protractor e2e test Angular UI grid Cell filling
在针对UI-Grid的量角器e2e测试中,我正在使用ui.grid.e2eTestLibrary.api:gridTest中提供的函数dataCell(gridId,fetchRow,fetchCol),
来源: -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您要检查的网格的ID
@param {integer} fetchRow要返回的行数(在可见行内)
@param {integer} fetchCol您要返回的列号(在可见列数内)
我的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是clickable(),但是当我通过方法给出输入时:-
cell.element(by.css("input")).sendKeys("Data to be filled");
量角器崩溃,显示的错误如下所示:-
Failed: No element found using locator: By(css selector, input).
请提出一种方法来编辑UI-grid中的网格单元,通过适当的滚动看不到这些单元。
采取的其他行动:-
通过增加创建UI网格的开发人员代码中的virtualizationThreshold和columnvirtualizationThreshold的值,我使用了一种呈现行和列的解决方法。 尽管现在遇到了性能问题,但单元仍可以正确定位。 RAM和交换已被自动化过程完全消耗,随后该过程变得太慢。 有什么办法可以解决内存性能问题?
很难对虚拟化数据进行自动化的端到端测试。 要找到它,它必须在DOM中,要进入DOM,必须滚动到它。 因此,您需要循环使用查找程序:find / scroll / find / scroll; 并且只有在您匹配或没有足够的空间滚动时才会爆发。 希望我错了,但是在ui.grid.e2eTestLibrary.api:gridTest中看不到有任何功能可以做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.