【问题标题】:robotium pressMenuItem or clickOnMenuItem not working机器人 pressMenuItem 或 clickOnMenuItem 不起作用
【发布时间】:2013-04-19 13:48:52
【问题描述】:

我使用 SherlockActionBar。我有 3 个菜单项。始终显示第一个,其他有文本且没有图标,因此它们在菜单中。 我运行了几次测试。第一次它工作得很好,但其他时候它失败了,因为

04-19 16:43:14.326: D/Robotium(22310): 'Disable layers' not found. Have found: 'Layer_3'
04-19 16:43:15.247: I/TestRunner(22310): ----- begin exception -----
04-19 16:43:15.267: I/TestRunner(22310): junit.framework.AssertionFailedError: Text string: 'Disable layers' is not found!
04-19 16:43:15.267: I/TestRunner(22310):    at junit.framework.Assert.fail(Assert.java:47)
04-19 16:43:15.267: I/TestRunner(22310):    at junit.framework.Assert.assertTrue(Assert.java:20)
04-19 16:43:15.267: I/TestRunner(22310):    at com.jayway.android.robotium.solo.Clicker.clickOnText(Clicker.java:339)
04-19 16:43:15.267: I/TestRunner(22310):    at com.jayway.android.robotium.solo.Clicker.clickOnMenuItem(Clicker.java:199)
04-19 16:43:15.267: I/TestRunner(22310):    at com.jayway.android.robotium.solo.Solo.clickOnMenuItem(Solo.java:763)

pressMenuItem 产生相同的结果。 为什么第二次启动时无法访问菜单?菜单甚至没有打开。好奇怪。。

编辑: 我使用最后一个机器人 4.1。 代码:

        View imageBehind = solo.getView(R.id.image_view_behind);
        View imageTop = solo.getView(R.id.image_view_top);
        solo.clickOnMenuItem(solo.getString(R.string.disable_sbl));
        assertTrue(imageBehind.getVisibility() == View.GONE);
        solo.clickOnMenuItem(solo.getString(R.string.disable_stl));
        assertTrue(imageTop.getVisibility() == View.GONE);
        solo.clickOnMenuItem(solo.getString(R.string.enable_sbl));
        assertTrue(imageBehind.getVisibility() == View.VISIBLE);
        solo.clickOnMenuItem(solo.getString(R.string.enable_stl));
        assertTrue(imageTop.getVisibility() == View.VISIBLE);

【问题讨论】:

  • 您使用的是哪个版本的机器人?可以分享一下测试代码吗?如果没有,您是否尝试过 clickOnMenuItem(actual, false); ?
  • 对我来说这似乎是一个时间问题。如果您回复我的原始问题,可以了解更多信息。
  • 为什么这个问题总是出现在第二次测试中?...

标签: android unit-testing robotium


【解决方案1】:

这是一个时间问题,非常普遍。一旦你的菜单启动,它会在随后的时间里消失。添加

    solo.waitForText("Menu item");

之前

    solo.clickOnMenuItem("Menu item");

可能会解决问题。但我认为,您需要为所有点击操作执行此操作。 让我知道。我也很想知道它是否能解决这个问题。

【讨论】:

  • @Metalex :我知道提供的答案解决了您的问题。我不完全确定,因为这在我的机器人版本中并没有发生在我身上。所以纯粹的伴侣。
【解决方案2】:

如果它不是间歇性工作,90% 的情况是时间问题,所以请在点击菜单项之间使用 sleep api

solo.sleep(2000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2015-11-22
    • 2018-05-04
    • 2017-08-01
    • 2020-11-27
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多