2013-04-05 110 views
4

我使用Robotium作爲適用於我的Android應用程序的Junit測試的庫。我寫了一些效果很好的測試。但是,當我嘗試編寫native ActionBar向上/主頁按鈕點擊的測試時,它失敗。(Robotium)單擊動作欄/主頁按鈕

我的測試代碼很簡單:

Solo solo = new Solo(getInstrumentation(), getActivity()); 
... 
solo.clickOnActionBarHomeButton(); // I expected it will click the Up/Home button of ActionBar 

我希望上面的代碼將點擊動作條原生的升/ Home按鍵,但失敗了,什麼也沒有發生的動作條上。爲什麼??

P.S.我正在使用Android 4.2.1設備。

+0

日誌中的任何? 點擊後您是否在測試代碼中有其他操作? – maszter 2013-04-05 18:32:38

+0

你可以把你的屏幕圖像和解釋你想在屏幕上點擊的位置嗎? – 2013-04-08 16:17:36

+0

確認,Robotium 5.0.1 solo.clickOnActionBarHomeButton()不能在4個設備上工作:4.0.4,4.1.2,4.2.2。,4.4 – 2014-01-30 09:37:51

回答

5

我用這個函數:

public void clickOnActionBarHomeButton(Solo solo) { 
    View homeView = solo.getView(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.home); 
    solo.clickOnView(homeView); 
} 

也許這不是一個完美的決定,但它的工作原理。

+0

它可以正確打開Robotium中的NavigationDrawer。 – 2014-05-12 12:48:33

1

在我們的應用程序Home按鈕最終會調用NavUtils.navigateUpFromSameTask。當使用

solo.clickOnActionBarHomeButton(); 

點擊Home按鈕,它不起作用。但是,我注意到solo.clickOnScreen可靠地點擊了Home按鈕。因此,我們使用這種方法,而不是solo.clickOnActionBarHomeButton

protected void clickOnHome() { 
    solo.clickOnScreen(50, 50); //usually hits Home button 
} 
0

您可以點擊向上/ Home鍵(即在活動第一ImageButton的元素)通過使用下面的代碼:

solo.clickOnImageButton(0); 
instrumentation.waitForIdleSync();