Espresso:在ScrollView上方的对话框上单击按钮无效

问题描述 投票:0回答:1

所以我有一个具有此视图层次结构的布局:

<androidx.constraintlayout.widget.ConstraintLayout ... >
  <TableLayout ... >
    ...
  </TableLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

在此布局中,我显示了自定义DialogFragment。在Espresso测试中,我已经像这样关闭了它:

onView(withText("Save")).perform(scrollTo(), click());

我更改了布局,在ScrollView周围添加了TableLayout。现在看起来更像这样:

<androidx.constraintlayout.widget.ConstraintLayout ... >
  <ScrollView ...>
    <TableLayout ... >
      ...
    </TableLayout>
  </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

这里是commit

并且Espresso行不再关闭对话框

我已经尝试过其他几种关闭方式,例如

onView(withId(android.R.id.button1)).perform(click());

onView(withText("Save"))
            .inRoot(isDialog())
            .check(matches(isDisplayed()))
            .perform(click());

UiDevice uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
uiDevice.findObject((new UiSelector().text("Save"))).click();

但是他们都没有关闭对话框。

有趣的是,测试失败不是因为单击本身失败,而是因为它无法从下一行找到视图(被对话框隐藏)。

android android-espresso
1个回答
0
投票

如果对话框显示在需要由Espresso查找的视图上,则测试失败是常见的行为。我建议使用UiAutomatorViewer

,该文件可以在{AndroidSdkPath}\tools\bin\。使用此工具,获取对话框的屏幕快照(手动触发)并检索按钮的ID(有时对话框的按钮ID可能与android.R.id.button1不同)。
© www.soinside.com 2019 - 2024. All rights reserved.