我正在寻找端到端测试(e2e(ag网格角度应用程序的正确方法。
量角器文档说,可以使用ng模型将by.model(modelName)
到sendKeys
用于输入字段。
https://www.protractortest.org/#/api?view=ProtractorBy.prototype.model
但是ng模型不是一个角度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测试,即使它通常被认为是一个基本的简单测试。
有什么方法可以让它发挥作用并能够进行例如单元格内容验证吗?意味着如果我编辑了单元格的内容,那么我的表单是否有效?所有这些都只用量角器。
我找到的解决方案是:
1-选择要编辑的ag网格单元:
const gridCell = element(by.css(`[role='gridcell'][col-id='colModelName']`));
2-双击单元格以启用ag网格上的编辑模式:
await browser.actions().doubleClick(gridCell).perform();
3-最后将我们想要的值发送到单元格:
await browser.actions().sendkeys('data value').perform();
您可以考虑最后一步,例如在网格中的某个位置选择任何其他元素并单击它,这样焦点将从编辑的单元格中删除,然后您就可以真正从当前网页中选择任何其他图元。
希望它能帮助任何试图进行e2e-ag网格测试的人,因为我一直在为如何使用by.model
而苦苦挣扎,而它还没有在角度2+的Protractor中工作。遗憾的是,官方文件中没有记录任何软件。