2016-11-08 15 views
1

したがって、特定のエラーが画面に表示されることを確認するページオブジェクト関数があります。 errorMsgは既にvarで定義されているセレクタですインデックスによる要素の存在の確認

this.isErrorMessageDisplayed = function() { 
     expect(errorMsg.isDisplayed()).to.become(true); 
} 

この関数はうまくいきます。しかし、私はこれは$$のように定義し、私はそれらのすべての出現を確認したかった場合例えば、私は次のように試してみました。..

this.isErrorMessageDisplayed = function() { 
     for(i = 0; i < errorMsg.count(); i++){ 
      expect(errorMsg.get(i).isDisplayed()).to.become(true); 
    } 
} 

なぜ...複数持つ要素を扱う際の問題に実行しておきますしかし、これは機能しませんが、私はそれを確認しようとしている要素が1つだけあるときはいつも素晴らしいですか?助けてくれてありがとう!

答えて

2

最初にまず分度器が非同期に実行されます。つまり、分度器が行を実行して次の行に移動したとき、行が実行を終了したことを意味するわけではありません。非同期プログラミングの世界へようこそ:好きなように見えるdoes notの

this.isErrorMessageDisplayed = function() { 
    errorMsg.each(function (elem,index) { 
     expect(elem.isDisplayed()).toBe(true) 
    }); 
}; 
+0

何かのためにインデックスを使用しない場合は、なぜそれを '.each()'関数にインクルードするのですか?ちょうど 'elem'を保つ – Gunderson

+0

あなたたちは揺れる、これは私がto.become(true)に変更した後にこれは働いた。すべてありがとうございました – Tree55Topz

+0

私は何かを見つけました。カウントがゼロの場合、この関数はまだ機能しません。 – Tree55Topz

3

メソッドcount()はPromiseを返します。ループの上限として使用することはできません。代わりに、各要素を反復処理する$$(...).eachを使用します。

this.isErrorMessageDisplayed = function() { 
    errorMsg.each(e => { 
    expect(e.isDisplayed()).to.become(true); 
    }); 
}; 
+0

構文E => {...これは、JSの正しい構文です:P

次のコードは、私のオススメですか! – Tree55Topz

+0

矢印機能はECMAScript 6によって導入され、ノード4.4.5以降でサポートされています。簡単な関数で置き換えることができます。 –

0

また、あなたは要素の配列を持っている場合は、isDisplayedのような表示された状態の配列に戻ります

this.isErrorMessageDisplayed = function() { 
    expect(errorMsg.isDisplayed()).not.to.include(false); 
}; 

、以下のようなものを使用することができます [true,true,true]。配列に falseが含まれていないことを検証する必要があります。

関連する問題