我正在为我的应用程序编写Espresso测试,并尝试在我的应用程序中打开相机后自动点击快门按钮。
我在Android模拟器中使用Espresso和UIAutomator。我设法在UIAutomatorViewer中转储此UI。
我无法弄清楚为什么我无法使用此代码使用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
任何建议都将受到赞赏。
答案 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();