2016-05-13 14 views
0

私は2 ListViewでアクティビティを持っていますが、最初のListViewの子を探したいのですが、最初にListViewの子と2番目のListViewを見つけるのはなぜですか?私を助けてください。エスプレッソonDataが階層内の複数のビューに一致する

コード:

DataInteraction dataInteraction = 
      onData(allOf(
        withClassName(endsWith("LinearLayout")), 
        hasSibling(withText("9.0")), 
        hasSibling(withText("衬衫")) 
      )); 
     dataInteraction.onChildView(withId(R.id.order_untake_jijia_listview_jia)) 
       .atPosition(0); 
     dataInteraction.perform(ViewActions.click()); 

それは見つける:あなたはRecyclerViewを使用しなければならないので、

ListView{id=2131493579, res-name=order_jijia_listview, visibility=VISIBLE, width=768, 
      height=659, has-focus=false, has-focusable=true, has-window-focus=true, 
      is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, 
      is-layout-requested=false, is-selected=false, root-is-layout-requested=false, 
      has-input-connection=false, x=0.0, y=345.0, child-count=7} ****MATCHES**** 

ListView{id=2131493586, res-name=order_jijia_pop_listview, visibility=VISIBLE, 
      width=0, height=0, has-focus=false, has-focusable=false, 
      has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, 
      is-focusable=false, is-layout-requested=true, is-selected=false, 
      root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, 
      child-count=0} ****MATCHES**** 

答えて

0

は、次の2本のマッチを持っています。そのため、エスプレッソは、レイアウト内で定義された同じidを持つ2つの要素を見つけます。

この回答を見てください: Espresso RecyclerView inside ViewPager

はまた、私はあなたのアプリケーションに漏れがあるかどうだろう、それは複数のビューを一致させることができると思うが、私はそれはあなただけrecyclerviewを使用していることがより可能性だと思います適切な方法でアクセスする必要があります。

同じIDを異なるレイアウトで定義し、同時にそれらが画面に表示されていなくてもメモリ内にある可能性があります。この場合、isCompletelyDisplayed()メソッドを使用できます表示されているものと一致するようにします。

これが役に立ちます。

0

アダプター・ビューのエスプレッソは、検索/アクションやるべきポイントする必要があります。

onData(allOf(withClassName(endsWith("LinearLayout")), 
     hasSibling(withText("9.0")), 
     hasSibling(withText("衬衫")))) 
      .inAdapterView(withId(R.id.order_jijia_listview)) 
      .onChildView(withId(R.id.order_untake_jijia_listview_jia)) 
      .atPosition(0) 
      .perform(click()); 
関連する問題