量角器e2e测试角度UI网格细胞填充

时间:2016-11-14 12:23:42

标签: javascript angularjs jquery-ui angular-ui-grid

在UI-Grid的Protractor e2e测试中,我使用了函数dataCell(gridId,fetchRow,fetchCol),该函数已在ui.grid.e2eTestLibrary.api中提供:gridTest,

来源: - 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 col的编号(在可见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网格中编辑网格单元格,这些方法通过适当的滚动不可见。

采取的附加行动: -

通过在创建UI网格的开发人员代码中增加virtualizationThreshold和columnvirtualizationThreshold的值,我使用了渲染行和列的解决方法。单元正确定位,但现在遇到了性能问题。 RAM和交换完全被自动化过程消耗,随后过程变得太慢。有什么方法可以解决内存性能问题吗?

1 个答案:

答案 0 :(得分:0)

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