javascript - Internet Explorer 的 findIndex() 方法问题

标签 javascript perl unit-testing selenium-webdriver internet-explorer-11

我正在使用 Selenium::Remote::Driver 对不同的浏览器进行一些测试模块。

我想检查我是否在我的网站列表中找到了某个项目,该列表来自 JavaScript 框架(创建网格)。对于这种情况,我必须使用 Selenium::Remote::Driver 允许的 JavaScript 片段。

我写了下面的代码

$script = q{

      var paramProgramName = arguments[0];

      var list  = $('#c-list').dxList('instance');
      var items = list.option('items');
      var index = items.findIndex(function(el){ return el.name == paramProgramName; });

      list.selectItem(index);

      return ;
};

$driver->execute_script($script, $programName);

它适用于 Chrome 和 Firefox,但不适用于 Internet Explorer,因为 findIndex 方法仅受版本 12 及更高版本支持。由于某种原因我必须使用版本 11。

我可以采取什么不同的措施来从每个浏览器获取索引?

最佳答案

So my question is how can i do differently to get my index for every browser ?

您至少有三个选择:

  1. 垫片Array#findIndex; MDN有一个可以使用的 shim/polyfill。

  2. 使用 IE11 具有的其他内容,例如 Array#some (甚至 IE9 也有):

    var index = -1;
    items.some(function(el, i) {
        if (el.name == paramProgramName) {
            index = i;
            return true;
        }
    });
    
  3. 使用 IE8 也有的其他内容,例如 for:

    var index = -1;
    for (var i = 0; i < items.length; ++i) {
        if (items[i].name == paramProgramName) {
            index = i;
            break;
        }
    }
    

关于javascript - Internet Explorer 的 findIndex() 方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37698996/

相关文章:

javascript - 重命名对象中的字段

javascript - 在脚本包含之前使用jquery?

perl - 如何减少 Perl CGI 脚本的启动时间?

java - 使用 Mastermind 和 Random() 类上的 Mocks 进行单元测试

php - 在 AppController 中对 beforeFilter() 和 beforeRender() 进行单元测试的正确方法

javascript - Controller 中的 Angular ID 自动递增

perl - 将任何 GET 路径与 Mojolicious::Lite 匹配

regex - 为什么 Perl regex\K 不排除在\K 之前匹配的模式?

Android 单元测试支持在 android 库模块中不起作用

javascript - 如何将 HTML 文档作为起始值传递给 CodeMirror?