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. 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.

0
VIN 20 avril 2017 à 21:06

3 réponses

Meilleure réponse

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.

2
Diego Torres Milano 20 avril 2017 à 19:54

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); 
2
MrCat 25 avril 2017 à 08:49

Il suffit de mettre la valeur "resource-id" de UI Automator Viewer à la place de *

Mdevice.findObject (nouveau UiSelector (). resourceId ("*")). click ();

0
Umesh Chandra Biswas 29 janv. 2019 à 05:27