如何使用Espresso Android点击选项菜单上的索引

时间:2015-07-24 06:51:27

标签: android menu automated-tests android-espresso

我使用此代码调用选项菜单:
openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());

之后,菜单出现了。现在我按其文本点击菜单项,这很好。

我已经注意到的问题是主题,可以改变,让我们说如果用户为不同的客户使用多种语言。因此,在长时间的测试中,它没有用。

出于这个原因,我想使用Espresso点击具体的index来查看特定的测试用例。

设置菜单似乎没有ID。所以我不知道如何点击特定项目'索引'在该菜单中,我们要点击第四项。

你能帮我解决一下吗?

2 个答案:

答案 0 :(得分:6)

所以,我会尝试逐步解释它:

1)您通过以下方法打开菜单:

openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());

我认为您可以通过输入以下代码打开相同的菜单:

onView(withContentDescription("More options")).perform(click());

2)你想点击Id:

项目

首先,为什么不想使用'strings.xml'。  使用智能手机设置语言自动更改从此文件中提取的文本,但前提是您在准确的翻译文件之前准备好了。

代码看起来像这样:

openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
onView(withText(R.string.help)).perform(click());

onView(withContentDescription("More options")).perform(click());
onView(withText(R.string.help)).perform(click());

当然,正如@Rodrigo所说,你仍然可以通过它的身份识别它。代码就像这样:

onView(withContentDescription("More options")).perform(click());
onView(withId(R.id.help_item)).perform(click());

请记住,在您的xml文件中,您可以为每个“视图”声明android:idandroid:textandroid:contentDescription

答案 1 :(得分:0)

我刚刚根据他的ID选择了菜单项。

onView(withId(R.id.some_option_menu_id)).perform(click());