Selenium::Remote::Driver
モジュールを使用して、異なるブラウザでいくつかのテストを行っています。
Webサイトのリスト、フレームワーク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を使用する必要があります.
すべてのブラウザからインデックスを取得するにはどうすればいいですか?
だから私の質問は、どのようにブラウザごとにインデックスを取得するためにどうすればいいですか?
少なくとも3つのオプションがあります。
シムArray#findIndex
; [〜#〜] mdn [〜#〜] には、使用できるシム/ポリフィルがあります。
IE11が持っている何か他のものを使用してください Array#some
(IE9にもあります):
var index = -1;
items.some(function(el, i) {
if (el.name == paramProgramName) {
index = i;
return true;
}
});
for
など、IE8でも持っているものを使用します。
var index = -1;
for (var i = 0; i < items.length; ++i) {
if (items[i].name == paramProgramName) {
index = i;
break;
}
}
http://underscorejs.org/ を使用できます。
使い方:
var index = _.findIndex(objects, function(item){
return item.name == programName;
});