嗨,我是Robotium的新手,目前正在我的应用程序中测试Android“ActionBaritems”,我使用了以下代码,

assertTrue(solo.searchText("Log In";));

solo.clickOnButton("Log In";);

solo.waitForActivity(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

assertTrue(solo.searchText("Forgot password?";));

solo.clearEditText(0);

solo.enterText(0, "stest123";);

solo.enterText(1, "123456";);

solo.waitForActivity(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

 final EditText editText = solo.getEditText(1); // Create a runnable which triggers the

onEditorAction callback Runnable runnable = new Runnable()

 {

public void run()

{
editText.onEditorAction(EditorInfo.IME_ACTION_DONE);

}
}; // Use Solo to get the current activity, and pass our runnable to the UI // thread.

solo.getCurrentActivity().runOnUiThread(runnable);

solo.waitForActivity(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

System.out.println(solo.getCurrentActivity().getLocalClassName().toString());

getInstrumentation().invokeContextMenuAction(getActivity(),3,0);

solo.clickOnText("Nearby";);

solo.sleep(1000);

View actionbarItem1 = solo.getView(2);

solo.clickOnView(actionbarItem1);

我不能点击ActionBaritem有人能告诉我代码哪里出错了吗?
因为我没有APK的来源,我不能通过常规的方法,除了这个或任何想法我哪里出错了?
提前谢谢

最佳答案

你做的事情很奇怪:

View actionbarItem1 = solo.getView(2);

solo.getView(int id)方法从r.id获取视图的id(就像路径一样)。
在一个名为r.java的文件中有一个类,其中引用了所有的id。当您创建一个视图时,它会为您的视图生成一个id。每个id都匹配一个视图。
public static final class id {
    public static final int fancy_action_item_id=0x7f07016a;
}

方法findViewById(int id)将通过提供id来帮助您获得所需的视图。
也许你应该这样做:
View actionBarItem1 = yourActivity.findViewById(R.id.fancy_action_item_id);
solo.clickOnView(actionBarItem1);

08-18 16:15
查看更多