2016-07-26 12 views
1

私は逆の位置でDOM要素のリストを取得したい分度器でテストを書きました。 「型に代入されていません: '(webdriverをwebdriverを)=>約束':ここで 分度器エラー "タイプに割り当てられません"ロケータ "

は私が書いたコードです

var buttons = element.all(by.js(() => { 
      var arr = document.querySelectorAll('.md-table-toolbar md-icon'); 
      return Array.prototype.reverse.apply(arr); 
     })); 

しかしtypescriptですが種類の

引数私に次のエラーがスローされますロケータ "

私のコードについてどうしましたか?

EDIT:

同僚がcustom.d.tsというファイルを編集したので、私は彼が多分の1やった見当もつかないTSとプログラミングにかなり新しい次

declare namespace protractor { 
    interface IProtractorLocatorStrategy { 
     js: (script: any, ...var_args: any[]) => webdriver.Locator; 
    } 
} 

イムを挿入その情報から回答を形成することができます。

答えて

1

element()メソッド内の要素ロケータのみを使用する必要があります。結果のWeb要素を逆にしたい場合は、約束を解決する必要があり、配列の値を逆にする必要があります。以下のコード

var buttons = element.all(by.css('.md-table-toolbar.md-icon')).then(
    function(arrayOfWebElements) 
    { 
    return arrayOfWebElements.reverse() 
    }) 
+0

のTyを私:今

// for Protractor 4.0.0: var elementLib = require('protractor/built/element'); var ElementArrayFinder = elementLib.ElementArrayFinder; ElementArrayFinder.prototype.reverse = function() { var self = this; var getWebElements = function() { return self.getWebElements().then(function(parentWebElements) { parentWebElements.reverse(); return parentWebElements; }); }; return new ElementArrayFinder(this.ptor_, getWebElements, this.locator_); }; 

を、あなたが行うことができますtypescriptは、ボタンには「Promise 」の「取得」プロパティを使用できないため、ボタンにはあるタイプの配列が必要となるということがあります。 – Opaldes

2

を試してみて、私はElementArrayFinderを拡張し、reverse()再利用可能な方法で追加します。高速応答のために

var elements = $$(".md-table-toolbar md-icon"); 
var reversedElements = elements.reverse(); 
+0

私は自分の質問を編集しました。私はあなたの解決策を後で見て、それが問題を解決したらそれを受け入れられた答えとしてマークします – Opaldes

関連する問題