【问题标题】:Clicking on Action Bar Menu Items in Robotium单击 Robotium 中的操作栏菜单项
【发布时间】:2017-03-27 19:36:42
【问题描述】:

我正在尝试在 Robotium 中运行一些自动化测试。我的应用程序中有以下代码,它设置了一个选项菜单:

  public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
        inflater.inflate(R.layout.logoutmenu, menu);
        return super.onCreateOptionsMenu(menu);
   }

我尝试使用代码点击 Robotium 中的菜单:

solo.sendKey(Solo.MENU);
solo.clickOnView(solo.getView(R.id.share)); //share is the id of the menu item

但是我的测试因错误而失败:

View is null and therefore cannot be clicked.

我也尝试过使用下面的代码,但也失败了:

solo.clickOnView(solo.getView(R.id.logoutmenu));
solo.clickOnMenuItem("Share My Artists"); 

【问题讨论】:

  • 你是在 Android 2.3 上运行你的测试吗?

标签: android actionbarsherlock robotium


【解决方案1】:

如果您在 Android 4.0+ 上运行 Robotium 测试,请考虑使用 solo.clickOnActionBarItem()

【讨论】:

  • 对于那些想知道正确参数的人来说,它是“int id”所以不要放 {0, 1, ...} 而是 R.id.your_id。 ; )
  • 我想点击操作栏上的溢出菜单,然后点击设置项。独奏.clickOnActionBarItem(0x1);以前工作过,但现在不工作了,我认为有些事情发生了变化,我不知道是什么,appcompat 操作栏。我正在使用 apk 进行测试,我无法访问 R.id.x
【解决方案2】:

就这样做吧:

solo.sendKey(Solo.MENU);
solo.clickInList(5);

5 是位置,只需将其更改为菜单项的位置 第一个是 1 ,第二个是 2 等等。

【讨论】:

    【解决方案3】:

    我可以让它在所有的 SDK 上运行,使用这个:

    View ab = _solo.getCurrentActivity().findViewById(R.id.action_bar);
    ArrayList<View> views = _solo.getViews(ab);
    for (int i = 0; i <views.size(); i++) {
        if (views.get(i).getClass().getName().contains("ActionMenuPresenter")) {
            _solo.clickOnView(views.get(i));
            _solo.waitForText(SOME_TEXT);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 2015-12-17
      相关资源
      最近更新 更多