私は最近、私の既存のAndroidプロジェクトの1つでEspressoを使いこなし始めました。Espresso AutoCompleteTextView click
私のプログラムでAutoCompleteTextView
が見つかるまで、すべてがきれいに行きました。私はオートコンプリートリストの最初のものを適切にクリックする方法を理解していないようです。私は実際には、この例ではonView()
またはonData()
のどちらを使用するのかも分かりません。
私は最近、私の既存のAndroidプロジェクトの1つでEspressoを使いこなし始めました。Espresso AutoCompleteTextView click
私のプログラムでAutoCompleteTextView
が見つかるまで、すべてがきれいに行きました。私はオートコンプリートリストの最初のものを適切にクリックする方法を理解していないようです。私は実際には、この例ではonView()
またはonData()
のどちらを使用するのかも分かりません。
、この前の質問への感謝: 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());
あなたはこのライブラリの例を確認することができます。 だから私はついにそれを考え出しLibrary
私は受け入れられた答えよりも少し洗練された方法を見つけたと思います!
onData(equalTo("ITEM")).inRoot(RootMatchers.isPlatformPopup()).perform(click());
内訳:
onData(x)
これは、ドロップダウンx
に一致するデータオブジェクトをレンダリングするビューを見つけます。データは、AutoCompleteTextView
に与えられたAdaptor
によって提供されるので、Adaptor
が提供する任意のタイプのオブジェクトである可能性があります。これはおそらくビューにはなりません。 (withText
、withId
など)ではなく、標準的なhamcrestコアマッチャー(equalTo
、instanceOf
など)を使用することをお勧めします。これはどのオブジェクトであるか、どのように一致させるかを試してみるのは苦痛かもしれませんが、それほど控えめな方法はありません。アダプタのアイテムがたくさんあると、だからonView
は動作しません! onData
は、あなたのデータと一致するビューを確実にロードします。チェックアウトhere(この何onData
リターン)とhere(これは、一致するデータをロードする)inRoot(RootMatchers.isPlatformPopup())
だから、ドロップダウンメニューは、あなたの活動が実行されているデフォルトのウィンドウよりも、別のウィンドウ上で判明した。だから私たちは、私たちがしたいことを指定する必要がありますそのウィンドウを検索します。受け入れられる答えは、デフォルトのものではないウィンドウと一致すると思われるRootMatchers.withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))
を使用します。とにかく誰か他の人。
私はこれがエスプレッソとどのように関係しているのか分からない – user3050720