Automatyzuję testowanie przepływu w mojej aplikacji, w której instaluję administratora urządzenia. Aby aktywować administratora urządzenia na większości urządzeń (załóżmy, że nie mam jakiegoś korporacyjnego interfejsu API, który pozwala mi to zrobić tak, jak to oferuje Samsung), system wyświetla popup dla użytkownika, który następnie musi kliknąć przycisk "Aktywuj".Jak wstrzyknąć wydarzenie click z Androidem UiAutomation.injectInputEvent
Używam Robotium i Androida JUnit do prowadzenia testów. W normalnym przypadku testowania można jedynie wchodzić w interakcje z aplikacją i procesem będącym w fazie testowania, a nie z żadnymi działaniami systemowymi, które się pojawiają.
The UiAutomation twierdzi, że pozwala na interakcję z innymi aplikacjami, korzystając z Accessibility Framework, a następnie dopuszczając jeden do .
więc - oto, co usiłuję zrobić:
public class AbcTests extends ActivityInstrumentationTestCase2<AbcActivity> {
private Solo mSolo
@Override
public void setUp() {
mSolo = new Solo(getInstrumentation(), getActivity());
}
...
public void testAbc(){
final UiAutomation automation = getInstrumentation().getUiAutomation();
MotionEvent motionDown = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), KeyEvent.ACTION_DOWN,
100, 100, 0);
// This line was added in to give a complete solution
motionDown.setSource(InputDevice.SOURCE_TOUCHSCREEN);
automation.injectInputEvent(motionDown, true)
MotionEvent motionUp = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), KeyEvent.ACTION_UP,
100, 100, 0);
// This line was added in to give a complete solution
motionUp.setSource(InputDevice.SOURCE_TOUCHSCREEN);
automation.injectInputEvent(motionUp, true)
motionUp.recycle();
motionDown.recycle();
}
}
Kiedy ten test jest prowadzony popup systemowi „Activate” administrator urządzenie jest aktywne, i chcę po prostu kliknij na ekranie. Na potrzeby tego pytania zakodowałem na 100.100 jako pozycję kliknięć, ale realistycznie kliknę w prawym dolnym rogu ekranu, aby móc nacisnąć przycisk.
Nie dostaję żadnych zdarzeń kliknięcia występujących na ekranie. Czy ktoś ma z tym doświadczenie? Czy są jakieś alternatywy, aby robić to, co chcę robić? Z mojego zrozumienia jest bardzo mało narzędzi, które to robią.
Dzięki.
Aktualizacja Dodany setSource
za właściwą odpowiedź
myślę, że należy wyjąć setSource() wywołuje że edytowane w. Pierwotny pytanie powinno wykazać problem, jeżeli odpowiedź pokazuje rozwiązanie. Jak to jest, porównanie dwóch przyczyn zamieszania, ponieważ oba działają. – Project