1

私は最近、私の既存のAndroidプロジェクトの1つでEspressoを使いこなし始めました。Espresso AutoCompleteTextView click

私のプログラムでAutoCompleteTextViewが見つかるまで、すべてがきれいに行きました。私はオートコンプリートリストの最初のものを適切にクリックする方法を理解していないようです。私は実際には、この例ではonView()またはonData()のどちらを使用するのかも分かりません。

答えて

1

、この前の質問への感謝: Testing autocomplete textview using espresso tool

病気だけでそれを使用するかもしれない人々のためにそれの私のバージョンを投稿未来。

onData(instanceOf("Whatever your arrayadapter contains".class)).inRoot(RootMatchers.withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).perform(ViewActions.click()); 
-2

あなたはこのライブラリの例を確認することができます。 だから私はついにそれを考え出しLibrary

+0

私はこれがエスプレッソとどのように関係しているのか分からない – user3050720

3

私は受け入れられた答えよりも少し洗練された方法を見つけたと思います!

onData(equalTo("ITEM")).inRoot(RootMatchers.isPlatformPopup()).perform(click());

内訳:

  • onData(x)これは、ドロップダウンxに一致するデータオブジェクトをレンダリングするビューを見つけます。データは、AutoCompleteTextViewに与えられたAdaptorによって提供されるので、Adaptorが提供する任意のタイプのオブジェクトである可能性があります。これはおそらくビューにはなりません。 (withTextwithIdなど)ではなく、標準的なhamcrestコアマッチャー(equalToinstanceOfなど)を使用することをお勧めします。これはどのオブジェクトであるか、どのように一致させるかを試してみるのは苦痛かもしれませんが、それほど控えめな方法はありません。アダプタのアイテムがたくさんあると、だからonViewは動作しません! onDataは、あなたのデータと一致するビューを確実にロードします。チェックアウトhere(この何onDataリターン)とhere(これは、一致するデータをロードする)
  • inRoot(RootMatchers.isPlatformPopup())だから、ドロップダウンメニューは、あなたの活動が実行されているデフォルトのウィンドウよりも、別のウィンドウ上で判明した。だから私たちは、私たちがしたいことを指定する必要がありますそのウィンドウを検索します。受け入れられる答えは、デフォルトのものではないウィンドウと一致すると思われるRootMatchers.withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))を使用します。

とにかく誰か他の人。

関連する問題