如何在Slickgrid单元格中输入文本

时间:2015-12-14 13:03:47

标签: javascript angularjs selenium slickgrid

我正在开发一个有Slickgrid的AngularJS应用程序。我正在尝试编写测试并遇到问题。当我使用Selenium时,我可以让它点击其中一个单元格,但sendkeys功能似乎没有做任何事情,即使我可以看到光标在单元格中闪烁,也没有输入任何文本。

即使我在Selenium IDE中记录我的动作,也不会记录在单元格中输入文本的操作。

我尝试在chrome中打开JavaScript控制台并编写一些JavaScript以在其中一个单元格中输入一些文本并取得进展(我不知道JavaScript)。

我可以在Chrome控制台中使用哪些JavaScript在其中一个单元格中输入文字?硒对SlickGrid不起作用吗?

我不确定这里最好的方法是什么。

由于

1 个答案:

答案 0 :(得分:0)

您似乎一下子要问两件事。我将尽力强调我没有Selenium的经验,但我可以尝试回答JavaScript部分。

您没有太多关于实际SlickGrid设置的信息,因此我的问题解决方案基于官方SlickGrid: Making it editable示例,您可以尝试使用这些方法,例如使用JavaScript ScratchPad

我将分享我找到的两种方法,因为我不知道您可以将哪一种方法集成到Selenium设置中。

方法1 - 通过SlickGrid API

var row = 0;
var cell = 0;
var test_input = 'Your input';

if(grid.canCellBeActive(row, cell)) {
    grid.setActiveCell(row, cell);

    grid.editActiveCell();

    var activeCell = $(grid.getActiveCellNode());
    if(typeof activeCell !== 'undefined') {
        activeCell.children(0).val(test_input);
        grid.gotoCell(row, cell);
    }
}

方法2 - 通过设置网格的data source

在这种情况下,它是一个JavaScript数组对象:

var row = 0;
var test_input = 'Your input';

data[row].title = test_input;
grid.invalidateRow(row);
grid.render();

这两种方法都改变了给定的单元格数据,主要区别在于使用第二种方法需要依赖于要设置的字段名称​​ property