2015-01-08 13 views
5

私はe2eテストを進めています。 私はボタンをクリックするまでページに存在しない確認ポップを持っています。 確認ポップアップが作成されたら、そこで要素からテキストを取得します。Jasmineはどのように分裂器の約束を待つことを期待しますか

その後、OKボタンをクリックすると、確認ポップアップがDOMから削除されます。また、DOMに新しい要素を追加して、先ほどのテキストを取得した値を取得します。

getText()は約束を返します。私が比較を行うときには、最初の要素が画面に表示されず、テストが失敗します。

確認のポップアップが画面上に表示されている場合は、確認用ポップアップ要素のテキストが表示されます。

ジャスミンはどのように約束を解決すると期待していますか?

ありがとうございました

答えて

6

このようなことはありますか?

element(by.id('dangerous-activity')).click().then(function() { 
    element(by.id('confirmation-text')).getText().then(function (textToConfirm) { 
    element(by.id('confirm-button')).click().then(function() { 
     element(by.id('new-element')).getText().then(function (newText)) { 
     expect(newText).toBe(textToConfirm); 
     }); 
    }); 
    }); 
}); 

ここですべての約束が明示的に解決されるため、ジャスミンはもう約束を解決する必要はありません。

あなたはexpectはで最後の2行を置き換え、new-element約束を解決させることができます:

.... 
     expect(element(by.id('new-element')).getText()).toBe(textToConfirm); 
    .... 

しかし、あなたが示すように、それはそれまでになくなっているので、あなたは、同じ期待にtextToConfirmを取得することはできません。

+0

こんにちは、この作品です。私はこのソリューションのいくつかの異なる形式を使用し、それは問題を解決した。ありがとう。 –

3

これは、あなたが欲しいものを行うための最も簡単な方法は次のようになります。

$('#open-popup').click(); 
var textToConfirm = $('#popup-text').getText(); 
$('#confirm-button').click(); 
var newText = $('#new-element').getText(); 
expect(newText).toBe(textToConfirm); 

注これは動作しません。

$('#open-popup').click(); 
var textToConfirmElement = $('#popup-text'); 
$('#confirm-button').click(); 
var newText = $('#new-element').getText(); 
expect(newText).toBe(textToConfirmElement.getText()); 

をポップアップがすでにクローズされた後、ここにあなたがテキストを取得するので。

関連する問題