2016-07-08 10 views
1

私たちは、ユーザーがログアウトしたときに同じUIを表示するビューポケットベルをアプリケーションに持っています。だから、ビューページャー上の各ページのUIが同じであるため、要素をタップしたり、表示されているかどうかをチェックするだけで、複数のエラーが一致します。だから、私の理論は、ビューのページャがすべてを一度にロードするので、なぜこのエラーが出るのかです。 contentDescriptorの変更は、すべてのビューで同じになるため機能しません。Android-Espresso:ViewPagerの要素を取得できません

ビューはログインしていないときはボタンで、サインインしたときはグリッド表示になります。

私の質問は - どのようにボタンや何か必要な要素に到達するのですか?私はアプリコードを変更することはできません。エスプレッソ2.2.2

+0

カスタムマッチャーを使用するこのスタックに見られるオーバーフローポストhttp://stackoverflow.com/a/30073528 –

答えて

0

を使用

はい、問題はViewPagerが現在可視Viewの左右の少なくともViewを作成することです。エスプレッソでは、スクリーン上にあるかどうかにかかわらず、のすべてのマッチャを階層のViewに使用します。

ちょうど1 Views照合するのは、画面上に現在あるViewに一致するようにisDisplayedを使用して、現在表示されている場合:

// Matches a view that is on the screen AND has the id R.id.some_button 
onView(allOf(isDisplayed(), withId(R.string.some_id))).check(matches(isDisplayed())); 

あなたがいないcheck()またはperform()を行う場合は、一致した後にa ViewonView()試験はではないが失敗します!したがって、Viewが表示されているかどうかを確認するには、check(matches(isDisplayed()))も必要です。

+0

ありがとう!素晴らしい答えと素晴らしい作品。 – Skycamefalling

関連する問題