0

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

量角器文档说您可以使用ng-modelby.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-cell, ag-cell-with-height, ag-cell-value, ag-cell-not-inline-editing,ag-cell-focus

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

ag-cell, ag-cell-with-height, ag-cell-value, ag-cell-focus,ag-cell-inline-editing

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

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

有没有办法让它工作并能够做例如单元格内容验证?意味着如果我编辑单元格的内容,那么我的表单是否有效?而这一切只使用量角器。

4

1 回答 1

3

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

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 中用于 angular 2+。可悲的是,官方文档中没有记录任何软件。

于 2018-11-10T05:33:00.027 回答