【问题标题】:How to enter text in Slickgrid cell如何在 Slickgrid 单元格中输入文本
【发布时间】:2016-03-19 23:29:02
【问题描述】:

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

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

我尝试在 chrome 中打开 JavaScript 控制台并编写一些 JavaScript 以在其中一个单元格中输入一些文本,但进度为零(我不懂 JavaScript)。

我可以在 chrome 控制台中使用什么 JavaScript 在其中一个单元格中输入文本? selenium 不能很好地与 SlickGrid 配合使用吗?

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

谢谢

【问题讨论】:

    标签: javascript angularjs selenium slickgrid


    【解决方案1】:

    您似乎同时询问了两件事。我会尝试强调我没有 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-08
      • 2018-05-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 2021-05-08
      相关资源
      最近更新 更多