0

I have the following Structure:

+------------>LinearLayout{id=2131689635, res-name=ll_monthly_advance_payments_container, 
|
+------------->LinearLayout{id=2131689636,  res-name=ll_monthly_advance_payments_list_container, 
|
+-------------->LeftRightListItemView{id=-1, 
|
+--------------->RelativeLayout{id=-1, 
|
+---------------->ScrollableTextView{id=2131689786, res-name=stv_left, text=Electricity
|
+---------------->AppCompatTextView{id=2131689787, res-name=tv_right, text=53.00 EUR
|
+-------------->LeftRightListItemView{id=-1, 
|
+--------------->RelativeLayout{id=-1, 
|
+---------------->ScrollableTextView{id=2131689786, res-name=stv_left, text=Water
|
+---------------->AppCompatTextView{id=2131689787, res-name=tv_right, text=251.00 EUR
|
+-------------->LeftRightListItemView{id=-1, 
|
+--------------->RelativeLayout{id=-1, 
|
+---------------->ScrollableTextView{id=2131689786, res-name=stv_left, text=Totals
|
+---------------->AppCompatTextView{id=2131689787, res-name=tv_right, text=304.00 EUR

What I am trying to do is test whether as a pair, stv_left and tv_right contains the correct values. I can confirm each one individually with the following script:

onView(allOf(withId(R.id.tv_right), withText("53.00 EUR"), isDescendantOfA(withId(R.id.ll_monthly_advance_payments_list_container))));

I cannot confirm them as a pair. How I can solve this problem?

sampsos
  • 3
  • 1

2 Answers2

0

Do you have a ListView? Then you could use the onData DataInteraction instead of the onView ViewInteraction.

If this is not feasible you could use the hasSibling Matcher, e.g. in this way:

onView(allOf(withId(R.id.stv_left), withText("Electricity"),
    hasSibling(allOf(withId(R.id.tv_right), withText("53.00 EUR"))),
    isDescendantOfA(withId(R.id.ll_monthly_advance_payments_list_container))));

But you probably want to do the text matching in the check() like this (I also removed some matchers which don't seem necessary for me):

onView(allOf(
    withId(R.id.tv_right),
    hasSibling(withText("Electricity"))))
.check(matches(withText("53.00Euro")));
sebokopter
  • 326
  • 5
  • 15
0

Both worked for me.

An alternative soltion that I stumbled upon was:

onView(allOf(withText("Elecrtricity"),
    withText("53.00 EUR"),
    isDescendantOfA(withId(R.id.ll_monthly_advance_payments_list_container))));
sampsos
  • 3
  • 1