junit.framework.AssertionFailedError:无法按下“后退”按钮

问题描述 投票:1回答:4

我正在使用Android UIAutomator退出应用程序。

assertTrue("Back button can't be pressed", getUiDevice().pressBack());

assertTrue("Back button can't be pressed", getUiDevice().pressBack());   // This line will giving exception.

当我们按下两次后退按钮时,我的应用程序将退出,这就是为什么我要两次调用它的原因。

但是

然后它将给我例外。

但是当我手动将其退回两次时,它将可以正常工作。

例外是:

junit.framework.AssertionFailedError: Back button can't be pressed
        at com.android.jdsu.automation.youtube.YoutubeUiTest.exitApplicaion(Yout
ubeUiTest.java:487)
        at com.android.jdsu.automation.youtube.YoutubeUiTest.testYouTube(Youtube
UiTest.java:208)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAuto
matorTestRunner.java:160)
        at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutoma
torTestRunner.java:96)
        at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.ja
va:91)
        at com.android.commands.uiautomator.Launcher.main(Launcher.java:83)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
        at dalvik.system.NativeStart.main(Native Method)

INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
INSTRUMENTATION_STATUS: test=testYouTube
INSTRUMENTATION_STATUS: class=com.android.jdsu.automation.youtube.YoutubeUiTest
INSTRUMENTATION_STATUS: stack=junit.framework.AssertionFailedError: Back button
can't be pressed
        at com.android.jdsu.automation.youtube.YoutubeUiTest.exitApplicaion(Yout
ubeUiTest.java:487)
        at com.android.jdsu.automation.youtube.YoutubeUiTest.testYouTube(Youtube
UiTest.java:208)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at com.android.uiautomator.testrunner.UiAutomatorTestRunner.start(UiAuto
matorTestRunner.java:160)
        at com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutoma
torTestRunner.java:96)
        at com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.ja
va:91)
        at com.android.commands.uiautomator.Launcher.main(Launcher.java:83)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:243)
        at dalvik.system.NativeStart.main(Native Method)
java android ui-automation android-uiautomator
4个回答
1
投票

是的,我也遇到过同样的问题,但不知道为什么会这样。我通过使用如下使其工作:

UiDevice device = UiDevice.getInstance();
device.pressMenu();

这对我来说很好。另外,您也可以按以下方式使用keyevent

Runtime.getRuntime().exec("/system/bin/input keyevent 82");

1
投票

assertTrue("Back button can't be pressed", getUiDevice().pressBack());

如果在pressBack()之后用户界面未更改,它将返回false,如果当前处于主视图,则在getUiDevice().pressBack());之后将返回false。>



0
投票

有趣的是,您是否尝试在两个呼叫之间添加等待时间。您的应用程序可能需要一些时间才能重新加载上一个活动。至少增加500毫秒或1秒的等待时间。

© www.soinside.com 2019 - 2024. All rights reserved.