使用 UIAutomator 单击相机快门
Click on Camera Shutter using UIAutomator
我正在为我的应用程序编写 Espresso 测试,并尝试在我的应用程序中打开相机后自动点击快门按钮。
我在 Android 模拟器中使用 Espresso 和 UIAutomator。我设法将此 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
如有任何建议,我们将不胜感激。
这对我有用
@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);
}
此测试找到快门并点击它。
如果您有兴趣,此测试是使用 CulebraTester 自动生成的。
您可以试试这个代码:
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);
只需要将 UI Automator Viewer "resource-id" 值放在 *
处
mdevice.findObject(new UiSelector().resourceId("*")).click();
我正在为我的应用程序编写 Espresso 测试,并尝试在我的应用程序中打开相机后自动点击快门按钮。
我在 Android 模拟器中使用 Espresso 和 UIAutomator。我设法将此 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
如有任何建议,我们将不胜感激。
这对我有用
@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);
}
此测试找到快门并点击它。
如果您有兴趣,此测试是使用 CulebraTester 自动生成的。
您可以试试这个代码:
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);
只需要将 UI Automator Viewer "resource-id" 值放在 *
处mdevice.findObject(new UiSelector().resourceId("*")).click();