(Robotium) 操作栏向上/主页按钮点击

4
我将使用Robotium作为我的Android应用程序的JUnit测试库。我编写了一些测试,它们运行良好。但是,当我尝试编写一个本地ActionBarUp/Home按钮点击测试时,它失败了。
我的测试代码非常简单:
Solo solo = new Solo(getInstrumentation(), getActivity());
...
solo.clickOnActionBarHomeButton(); // I expected it will click the Up/Home button of ActionBar

我原本期望上述代码能够点击原生ActionBar的Up/Home按钮,但是失败了,在ActionBar上没有任何反应。为什么会这样呢?
附注:我正在使用Android 4.2.1设备。

日志里有什么吗? 在点击之后,你的测试代码中还有其他操作吗? - maszter
你能放上你屏幕的图片并解释一下你想在屏幕上点击的位置吗? - VISHAL VIRADIA
确认,Robotium 5.0.1中的solo.clickOnActionBarHomeButton()在4个设备上不起作用:4.0.4、4.1.2、4.2.2和4.4。 - Artem Zinnatullin
3个回答

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

也许这不是一个完美的决定,但它有效。

在Robotium中正确打开NavigationDrawer是可行的。 - Saeed Zarinfam

1
在我们的应用程序中,Home 按钮最终调用 NavUtils.navigateUpFromSameTask。使用时,需要注意。
solo.clickOnActionBarHomeButton();

点击Home按钮时,它无法正常工作。然而,我已经注意到solo.clickOnScreen可靠地点击Home按钮。因此,我们使用这种方法代替solo.clickOnActionBarHomeButton

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

0

您可以使用以下代码点击Up/Home按钮(即活动中的第一个ImageButton元素):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接