如何模拟后退按钮单击

时间:2014-07-29 11:52:58

标签: android back-button robotium

所以我正在使用Robotium来自动化测试,我遇到了一些问题。 Robotium能够“sendkey(keyevent.keycode_back)”,所以我可以从一个视图返回到前一个但现在还有另一个(android本机)活动打开当我点击“忘记密码”(超链接),我会需要android本身模拟后退按钮点击。有办法吗?

至于我正在处理的代码:

@FlakyTest(tolerance = 2)
public void testperformMsgListItemandItemSelectTestAfterStartInLandscape_ShouldSucceed() throws Exception{
    try {

        mSolo.clickOnText("Forgotten Password?");
        assertFalse(mSolo.getCurrentActivity().hasWindowFocus());
        mSolo.sendKey(KeyEvent.KEYCODE_HOME);
        assertTrue(mSolo.getCurrentActivity().hasWindowFocus());
        mSolo.clickOnText("Register Now!");
        assertFalse(mSolo.getCurrentActivity().hasWindowFocus());

    } catch (AssertionError err) {
        mSolo.fail(getName(), err);
        throw err;
    }
}

3 个答案:

答案 0 :(得分:1)

创建KeyEvent并发送它。

例如:

KeyEvent kdown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
Activity.dispatchKeyEvent(kdown);

另一种方法是在您的活动中调用finish()。处理当前活动并将您带回到之前的活动,这正是Android操作系统在您单击后退按钮时所执行的操作。

答案 1 :(得分:1)

如果当前活动属于您正在测试的应用,请使用

mSolo.goBack();

如果当前活动属于另一个应用程序,Robotium无法执行任何操作,因此要编写有用的测试,您无法让测试启动其他应用。

答案 2 :(得分:0)

if> = API LEVEL5:

   super.onBackPressed()

否则

    KeyEvent kdown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
    Activity.dispatchKeyEvent(kdown);