2015-10-28 4 views
6

私はこれが欺瞞の質問だとは思わない。私は簡単なエスプレッソ・テストを書いており、その一部にはスナックバーの「OK」ボタンをクリックする必要があります。 'テキスト付き: "OK" である' ビュー上 'シングルクリック' を実行エラー:エスプレッソテストでスナックバーボタンをクリックするには?

Espresso.onView(allOf(withId(android.support.design.R.id.snackbar_text), withText(R.string.permission_snackbar))) 
      .check(matches(isDisplayed())); 
Espresso.onView(withText("Ok")).perform(click()); 

これは

android.support.test.espresso.PerformExceptionをスローします。原因: java.lang.RuntimeException: ターゲットビューが次の制約の1つ以上と一致しないため、アクションは実行されません。 ビュー領域の少なくとも90%がユーザーに表示されます。 対象ビュー: "AppCompatButton {id = 2131558552、res-name = snackbar_action、 visibility = VISIBLE、width = 264、height = 144、has-focus = false、 has-focusable = true、has-window-focus = true is-enabled = true、is-focused = false、is-focusable = true、 is-layout-requested = false、is-selected = false、 root-is-layout-requested =偽有する入力接続=偽、x = 684.0、 Y = 53.0、テキスト= OK、入力タイプ= 0、IME-ターゲット= falseを有するリンク= FALSE}」

任意のアイデア?それは単にID snackbar_actionを使用して見つけることができ

+0

"私はこれが愚かな質問だとは思わない。"もちろん、誰もこれまでしていません。なぜこれが詐欺ではないのか説明しようとするならば、*特定の理由*特定の既存の質問*があなたの質問に答えなかった理由を挙げてください。さもなければ、それを持ち上げなさい。 –

+0

私はほとんど同じ問題を抱えていますが、どのようにして解決しましたか? –

答えて

1

onView(allOf(withId(android.support.design.R.id.snackbar_action))) 
    .perform(click()); 
+0

OPをよく見れば、マッチャーが働いていることがわかります。私の答えは、この問題の原因となる競合状態について説明しています。 – OYRM

6

ここjava.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: at least 90 percent of the view's area is displayed to the user.RuntimeException。問題は、実際にはViewが完全に表示されないことが原因です。

この問題は、競合状態によって発生します。ビューを開こうとしていますが、開いている間にビューをクリックしようとしています。タイミングが正しくない場合は、Viewの90%未満がエスプレッソのフレームワークでclick()に利用可能になります。あなたの携帯電話のDeveloper Options

  • 設定し、次の
    • ウィンドウアニメーション規模= 0.0x
    • トランジションアニメーションのスケールにThe Espresso Setup Instructions

      • 移動で推奨されているようにあなたは、無効にするアニメーションによって問題を解決できる場合があります= 0.0x
      • アニメータ継続時間スケール= 0.0x

    私自身のテストでは、Transition Animation Scale0.0xに設定するだけで、離れていくことができます。あなたが想像しているように、これはあなたが経験している競争状態に完全に一貫した解決策です。

  • 関連する問題