Internet Explorer的findIndex()方法问题 [英] findIndex() method issue with internet explorer
问题描述
我正在使用 Selenium对不同的浏览器进行一些测试: :Remote :: Driver
模块。
I am doing some tests with differents browsers using the Selenium::Remote::Driver
module.
我想查看是否在网站列表中找到了一些项目,列表来自框架JavaScript(创建网格)。对于这种情况,我必须使用 Selenium :: Remote :: Driver
允许的JavaScript代码段。
I would like to check if I find some item in my web site list, list from a framework JavaScript (which creates grids). For this case I have to use JavaScript snippet allowed by 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);
它适用于Chrome和Firefox,但不适用于Internet Explorer,因为 findIndex
方法仅受版本12及以下版本支持。出于某种原因,我必须使用版本11.
It works fine with Chrome and Firefox but not with Internet Explorer because the findIndex
method is only supported by version 12 and following. For some reason I have to use version 11.
我可以采用哪种方式从每个浏览器获取索引?
What can I do differently to get an index from every browser?
推荐答案
所以我的问题是我如何以不同方式获取每个浏览器的索引?
So my question is how can i do differently to get my index for every browser ?
您至少有三个选择:
-
Shim
数组#findIndex
; MDN 有垫片/填充物您可以使用。
Shim
Array#findIndex
; MDN has a shim/polyfill you can use.
使用IE11具有的其他功能,例如 Array#some
(即使IE9也有):
Use something else that IE11 has, such as Array#some
(which even IE9 has):
var index = -1;
items.some(function(el, i) {
if (el.name == paramProgramName) {
index = i;
return true;
}
});
使用IE8所拥有的其他内容,例如 for
:
var index = -1;
for (var i = 0; i < items.length; ++i) {
if (items[i].name == paramProgramName) {
index = i;
break;
}
}
这篇关于Internet Explorer的findIndex()方法问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!