9

Я делаю несколько тестов с разными браузерами. Я использую для этого Selenium :: Remote :: Driver. Я хотел бы проверить, найду ли я какой-либо элемент в своем списке веб-сайтов, список из фреймворка js (который создает сетки). В этом случае я должен использовать фрагмент Javascript, разрешенный Selenium :: Remote :: Driver. я сделал следующий код:метод findIndex() с Internet explorer

$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); 

Он прекрасно работает с хромом и светлячок. Моя проблема в том, что мой код не работает с internet.explorer, потому что метод findIndex() поддерживается только i.e 12 и ниже. И по некоторым причинам мне нужно использовать internet.explorer 11.

Так что мой вопрос: как я могу поступить иначе, чтобы получить мой индекс для каждого браузера?

Благодаря

ответ

29

Так что мой вопрос, как я могу сделать по-другому, чтобы получить мой индекс для каждого браузера?

У вас есть по крайней мере три варианта:

  1. Shim Array#findIndex; MDN имеет прокладку/полиполк, который вы можете использовать.

  2. использовать что-то еще, что IE11 имеет, например, Array#some:

    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; 
        } 
    } 
    
+0

Спасибо за ответ @ T.J. Сначала бродишь! Я не очень знаком с Шимом, но я все равно посмотрю. Во-вторых, я проверю его, и я перенастрою вам ответ. – Chaoui05

+0

Это прекрасно. Еще раз спасибо – Chaoui05

+0

:). Готово ! он ответил на мой вопрос – Chaoui05

0

Лучший способ:

var findArrayIndex = function (array, predicateFunction) { 
    var length = array == null ? 0 : array.length; 
    if (!length) { 
     return -1; 
    } 
    var index = -1; 
    for (var i = 0; i < array.length; ++i) { 
     if(predicateFunction(array[i])) { 
      index = i; 
      break; 
     } 
    } 
    return index; 
} 

Использование:

findArrayIndex(cachedAnnouncementsArray, function(o){return o.ID == 17;}); 
Смежные вопросы