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

Moo*_*ody 7 android automated-tests menu android-espresso

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

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

我已经注意到的问题是主题,可以改变,假设用户是否为不同的客户端使用多种语言.所以在长时间的测试中它没用.

出于这个原因,我想用来Espresso点击index具体的测试用例.

设置菜单似乎没有ID.所以我不知道如何点击该菜单中的特定项目"索引",假设我想点击第四项.

你能帮我解决一下吗?

pio*_*543 6

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

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

openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
Run Code Online (Sandbox Code Playgroud)

我认为你可以通过这个代码打开相同的菜单:

onView(withContentDescription("More options")).perform(click());
Run Code Online (Sandbox Code Playgroud)

2)你想点击Id上的项目:

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

代码看起来像这样:

openActionBarOverflowOrOptionsMenu(getInstrumentation().getTargetContext());
onView(withText(R.string.help)).perform(click());
Run Code Online (Sandbox Code Playgroud)

要么

onView(withContentDescription("More options")).perform(click());
onView(withText(R.string.help)).perform(click());
Run Code Online (Sandbox Code Playgroud)

当然,你仍然可以通过它的id来捕捉视图,就像@Rodrigo说的那样.比代码更像是这样的:

onView(withContentDescription("More options")).perform(click());
onView(withId(R.id.help_item)).perform(click());
Run Code Online (Sandbox Code Playgroud)

请记住,在xml文件中,您可以为每个"视图"声明android:id,android:text或者android:contentDescription.

  • “更多选项”将与其他语言环境有不同的描述。 (2认同)

Rod*_*ues 1

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

onView(withId(R.id.some_option_menu_id)).perform(click());
Run Code Online (Sandbox Code Playgroud)