2017-02-01 17 views
3

radioButtonの値に基づいて、国のdropDownListを表示または非表示にする角度のあるページがあります。 rbが真の場合、ddlは隠され、ddlが偽の場合はddlが表示されます。これはddl HTMLで直接行われ、selectタグに次の属性を追加します:ng-show="!vm.inscriptor.isLocalCountry"。予想通りng-showを含む分度器テスト

すべては、以下の分度器のテストを除いて、うまく作品:

、DDLは隠されます、しかし「isDisplayed」真の値のラジオボタンをクリックすると予想したように
it(testNumber++ + " ddl de países debería estar oculto", function() { 
    pages.register.rbdLocalCountryTrue.click(); 
    expect(pages.register.ddlCountries.isPresent()).toBeTruthy(); 
    expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy(); 
}); 

、スロー期待します次のエラーが発生しました:

Expected true to be falsy.

私が考えることができる唯一の理由は、クリックが完了する前にexpect文が実行されていることだけです。私は次のようにテストをリファクタリングしようとしました:

it(testNumber++ + " ddl de países debería estar oculto", function() { 
    pages.register.rbdLocalCountryTrue.click().then(function() { 
     expect(pages.register.ddlCountries.isPresent()).toBeTruthy(); 
     expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy(); 
    }); 
}); 

しかし、私はまだ期待どおりランダムな結果を得ています。

私がbrowser.sleep(5000)を追加すると、expect結果が正しく表示されますが、私が読んだところでは、browser.sleepは最後の手段のようです。

分度器にクリックが完了するのを待つよう指示する方法はありますか?その他の提案はありますか?あなたはclick()後に隠される要素のbrowser.wait()を使用することができます

Thxを

答えて

1

。そして追加するには、チェーンにあなた

あなたはこの

it(testNumber++ + " ddl de países debería estar oculto", function() { 
    pages.register.rbdLocalCountryTrue.click(); 
    browser.wait(protractor.ExpectedConditions.invisibilityOf(pages.register.ddlCountries), 10000); 
    expect(pages.register.ddlCountries.isPresent()).toBeTruthy(); 
    expect(pages.register.ddlCountries.isDisplayed()).toBeFalsy(); 
}); 
+0

は、あなたの答えをありがとうのようなものを持つことができますが、shouldn」分度器制御フローがためにそれをしないようClick()の約束とexpect()を必要としません「click()」は、角仕上げ処理まで待機しますか?なぜ私は待機状態を含める必要がありますか? – aplon

+0

これは良い質問です。分度器はデフォルトで角運動が完了するのを待っています。これは、 'vm.inscriptor.isLocalCountry'値が更新されるのを待つことを意味します。しかし、要素のアニメーションを隠すことには時間がかかり、分度器はそれを待たないでください – AdityaReddy

+0

それを得ました。答えと説明をありがとう! – aplon