2015-04-22 20 views
20

Dostałem błąd gdy uruchamiam android testu kawy:PerformException: Błąd podczas wykonywania 'jednego kliknięcia'

com.google.android.apps.common.testing.ui.espresso.PerformException: Błąd podczas wykonywania „single kliknij "na widoku" z identyfikatorem: to < 2131034173> ".

Mój kod jest proste:

onView(withId(R.id.btn)).perform(click()); 

Ale nie ma błędu z tym kodem:

onView(withId(R.id.btn)).check(matches(isDisplayed())); 

nie mogę znaleźć przyczynę, dlaczego tak się stało.

+2

Proszę zaksięgować kompletny ślad stosu. Pierwszy bit komunikatu o błędzie jest niewystarczający. Dzięki PerformExceptions interesujące bity znajdują się w sekcji "Powodowane przez", co pokazuje wyjątek, który początkowo zakończył się niepowodzeniem kliknięcia. – haffax

+1

@Winton znalazłeś jakieś rozwiązanie tego problemu? używam tego samego numeru – Gaurav

+0

Może się to zdarzyć, gdy przeprowadzasz serię testów. Spróbuj ponownie uruchomić ten sam test (sam ten test) i sprawdź, czy wciąż napotykasz ten sam problem. – Henry

Odpowiedz

20

Upewnij się, że klawiatura nie jest wyświetlana. Można go łatwo zamknąć za pomocą narzędzia ViewSction closeSoftKeyboard.

Ponadto upewnij się, że animacje systemowe są wyłączone. Pod Ustawienia ->Opcje rozwijające wyłączyć następujące:

  • Skala animacji okna
  • Skala animacji przejścia
  • Animator skala trwania

Ponadto, może to być spowodowane przez ANR okna dialogowe z innych aplikacji.

Wystąpił również problem z numerem here.

+0

Dzięki. Zmieniłem kod i wyłączyłem skalowanie, ale błąd jest w tym miejscu. Podczas testu uruchomienia nie ma okien dialogowych ANR. –

+0

Świetna odpowiedź. Espresso.closeSoftKeyboard() oszczędza mój dzień ... ponieważ mój drugi test kończy się niepowodzeniem (bez względu na kolejność), kiedy zarówno pierwszy, jak i drugi test mają przycisk do kliknięcia. – Elye

48

Sztuką jest odczytanie pełnego śladu stosu błędu. W środku znajduje się kilka ważnych informacji takich jak ta:

Caused by: 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. 
Target view: "ImageView{id=2131492903, res-name=button_hamburger, desc=opens the side drawer, visibility=VISIBLE, width=64, height=64, 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=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=6.0, y=6.0}" 

, która wyjaśnia błąd w szczegółach.

+0

Dzięki! W moim przypadku jest to z powodu NPE. To dziwne, ponieważ oczekuję, że moje zmienne zostaną utworzone. Wygląda na to, że muszę przeprowadzić cały test, aby zainicjować działanie/fragment przed uruchomieniem go. Używam jednej metody testowania (opisującej historię jednego użytkownika). Sugeruję, aby google usunąć przycisk odtwarzania obok trybu testowego, ponieważ w tym przypadku jest on bezużyteczny, myślę, że jest on również bezużyteczny, głównie w innych przypadkach. :/ –

+0

Dzięki! W moim przypadku nie udało mi się dodać działania, które ma zostać uruchomione w teście, do pliku manifestu. –

+0

To był dokładnie mój przypadek, dzięki! –

12

Miałem ten sam problem, ponieważ miękka klawiatura zachodziła na element. Użyłem scrollTo(), a następnie click(), aby rozwiązać problem.

onView(withId(R.id.btn)) 
    .perform(scrollTo()) 
    .perform(click()); 

Jeśli powyżej nie działa, spróbuj dodać następujące pierwszy:

onView(withId(R.id.myEditText)).perform(closeSoftKeyboard()); 
2

Jeśli widok nie jest widoczny podczas testowania ... używać perform(scrollTo()) ... Będzie przewinąć i kliknij działań będzie perfrom.

Przykład: -

onView(withId(R.id.btn)).perform(scrollTo()).perform(click()); 
-2

error było spowodowane UI bloku gwintu. Sprawdź swoją target Activity code, zwłaszcza funkcję setUp lub .

Spotkałem ten sam error, jest zły listener w wątku UI, które zawsze będą wywoływane. Po usunięciu listener można naprawić błąd .

1

Mam ten sam problem, ale przyczyną jest:

Caused by: android.support.test.espresso.AppNotIdleException: Looped for 3713 iterations over 60 SECONDS. The following Idle Conditions failed . 

nie wiem gdzie jest problem, ponieważ nie kliknąć na przycisk, który przejść do następnego działania, ale wygląda na to wciąż szukając przycisku po

Powiązane problemy