使用UIAutomator单击相机快门

时间:2017-04-20 18:06:22

标签: android-camera android-espresso uiautomator android-uiautomator

我正在为我的应用程序编写Espresso测试,并尝试在我的应用程序中打开相机后自动点击快门按钮。

我在Android模拟器中使用Espresso和UIAutomator。我设法在UIAutomatorViewer中转储此UI。 UIAutomatorViewer

我无法弄清楚为什么我无法使用此代码使用UIAutomator点击快门按钮:

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();
}

相机只是坐在那里,永远不会点击快门按钮。这是我在Android Studio监视器中获得的堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Activity.findViewById(int)' on a null object reference

任何建议都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

这对我有用

@Override
public void onResume() {
    super.onResume();
    if (mPostListener != null) {
        mPostReference.removeEventListener(mPostListener);
    }

}

此测试找到快门并点击它。

如果您有兴趣,可以使用CulebraTester自动生成此测试。

答案 1 :(得分:2)

您可以尝试以下代码:

device.findObject(new UiSelector().resourceId("com.android.camera:id/shutter_button")).click();

device.findObject(new UiSelector().description("Shutter button")).click();

device.executeShellCommand("input keyevent 27");

这意味着KEYCODE_CAMERA值为27

device.click(x,y); 

答案 2 :(得分:0)

只需将UI Automator Viewer的“ resource-id”值放在*位置即可。

mdevice.findObject(new UiSelector()。resourceId(“ *”))。click();