0

我正在爲我的應用程序寫一個Espresso測試,並試圖在我的應用程序中打開相機後自動點擊快門按鈕。點擊使用UIAutomator的相機快門

我在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 

任何意見,將不勝感激。

回答

1

這爲我工作

@Before 
public void setUp() { 
    // Initialize UiDevice instance 
    final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); 
    mDevice = UiDevice.getInstance(instrumentation); 
} 

... 


/** 
* @@Test comment [email protected]@ 
* 
* @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自動生成此測試。

0

你可以試試這個代碼:

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