J'écris un test Espresso pour mon application et j'essaie d'automatiser le clic sur le déclencheur après l'ouverture d'une caméra dans mon application.
J'utilise Espresso et UIAutomator dans l'émulateur Android. J'ai réussi à vider cette interface utilisateur dans UIAutomatorViewer.
Je ne peux pas comprendre pourquoi je ne peux pas cliquer sur le bouton de l'obturateur en utilisant UIAutomator en utilisant ce code:
public void clickCameraShutterButton() throws UiObjectNotFoundException
{
UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
UiSelector shutterSelector = new UiSelector().resourceId("com.android.camera:id/shutter_button");
UiObject shutterButton = device.findObject(shutterSelector);
shutterButton.click();
}
L'appareil photo se trouve juste là et le déclencheur n'est jamais cliqué. Voici la trace de pile que j'obtiens dans le moniteur Android Studio:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Activity.findViewById(int)' on a null object reference
Tout avis sera le bienvenu.
3 réponses
Cela a fonctionné pour moi
@Before
public void setUp() {
// Initialize UiDevice instance
final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
mDevice = UiDevice.getInstance(instrumentation);
}
...
/**
* @@Test comment here@@
*
* @throws Exception
*/
@Test
public void culebraGeneratedTest_CameraShutter() throws Exception {
mDevice.findObject(By.res("com.android.camera2:id/shutter_button").desc("Shutter").clazz("android.widget.ImageView").text(Pattern.compile("")).pkg("com.android.camera2")).clickAndWait(Until.newWindow(), DEFAULT_TIMEOUT);
}
Ce test trouve l'obturateur et clique dessus.
Si vous êtes intéressé, ce test a été généré automatiquement à l'aide de CulebraTester.
Vous pouvez essayer ce code:
device.findObject(new UiSelector().resourceId("com.android.camera:id/shutter_button")).click();
Ou
device.findObject(new UiSelector().description("Shutter button")).click();
Ou
device.executeShellCommand("input keyevent 27");
Cette valeur moyenne KEYCODE_CAMERA est 27
Ou
device.click(x,y);
Il suffit de mettre la valeur "resource-id" de UI Automator Viewer à la place de *
Mdevice.findObject (nouveau UiSelector (). resourceId ("*")). click ();
De nouvelles questions
android-camera
Le cadre Android comprend la prise en charge de diverses caméras et fonctionnalités de caméra disponibles sur les appareils, vous permettant de capturer des photos et des vidéos dans vos applications.