2013-04-05 84 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();