Ag-grid访问和编辑Protractor e2e测试中的单元格

时间:2018-11-09 04:39:22

标签: angular protractor angular-test angular-e2e ag-grid-e2e

我正在寻找正确的方法来进行端到端测试(e2e),即ag-grid角度应用程序。

量角器文档说,您可以使用ng-model使用by.model(modelName)sendKeys到输入字段。

https://www.protractortest.org/#/api?view=ProtractorBy.prototype.model

但是ng-model不是angular 2指令

例如,我尝试过这种方法,但是它不起作用:

const cellElement = element(by.model('row.name'));

browser.actions().click(cellElement).perform(); //to get focus on cell

cellElement.sendKeys('some value');

但这不会产生任何结果,当我使用Visual Studio代码进行调试时,单元格上没有焦点,单元格中也没有光标。

我发现的一件事是当单元格不处于焦点或处于编辑模式时,我在devtool中看到了这些添加到单元格元素的类:

ag-cellag-cell-with-heightag-cell-valueag-cell-not-inline-editingag-cell-focus

当我在没有量角器的情况下手动双击一个单元格(我什至无法正常工作)时,然后我将这些类添加到chrome devtool的元素中:

ag-cellag-cell-with-heightag-cell-valueag-cell-focusag-cell-inline-editing

  

是否可以将ag-cell-inline-editing类添加到元素中并强制该单元格接收我们发送给它的内容?

因为我看到在官方文档中没有记录的方法来进行这种高级量角器e2e测试,即使通常认为它像创建一个基本的简单测试一样。

  

是否有任何方法可以使它正常工作并能够进行单元格内容验证?意味着如果我编辑单元格的内容,那么我的表格有效吗?以及所有这些仅使用量角器。

1 个答案:

答案 0 :(得分:1)

我为此找到的解决方案是:

1-选择我们要编辑的ag-grid单元格:

const gridCell = element(by.css(`[role='gridcell'][col-id='colModelName']`));

2-双击单元格以在ag-grid上启用编辑模式:

await browser.actions().doubleClick(gridCell).perform();

3-最后将所需的值发送到单元格:

await browser.actions().sendkeys('data value').perform();

您可以考虑最后一步,例如,选择网格中某处的任何其他元素,然后单击它,这样,焦点将从已编辑的单元格中移出,然后您便可以真正选择任何其他元素从当前网页开始。

希望它对任何尝试进行e2e ag-grid测试的人都有帮助,因为我一直在努力使用by.model,而在Protractor中它还不能用于角度2+。遗憾的是,官方文档中没有记录任何软件。