Internet Explorer的findIndex()方法问题

Cha*_*i05 20 javascript perl unit-testing selenium-webdriver internet-explorer-11

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

我想检查一下我的网站列表中是否有一些项目,从框架JavaScript(创建网格)列表.对于这种情况,我必须使用允许的JavaScript代码段Selenium::Remote::Driver.

我写了以下代码

$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);
Run Code Online (Sandbox Code Playgroud)

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

为了从每个浏览器获取索引,我可以做些什么?

T.J*_*der 62

所以我的问题是我如何以不同的方式获取每个浏览器的索引?

您至少有三个选择:

  1. Shim Array#findIndex; MDN有一个可以使用的垫片/填充物.

  2. 使用IE11具有的其他东西,例如Array#some(甚至IE9都有):

    var index = -1;
    items.some(function(el, i) {
        if (el.name == paramProgramName) {
            index = i;
            return true;
        }
    });
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用IE8所具有的其他东西,例如for:

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