android - 检查 Espresso 是否显示对话框

标签 android android-espresso

我正在尝试使用新的 android-test-kit (Espresso) 编写一些测试。 .但我找不到任何关于如何检查是否显示对话框并对其执行一些操作的信息(例如单击正面和负面按钮等)。请注意,对话框也可能由 WebView 显示,而不是由它自己的应用程序显示。

任何帮助将不胜感激。我只需要一个链接,或者一些基本的示例代码:

  1. 检查是否出现对话框
  2. 点击对话框按钮
  3. 与对话框的内部 View 交互(如果是自定义 View )
  4. Preform 在对话框外单击,并检查它是否正在显示(例如,如果在对话框生成器上调用了 setCancelable(false) 并且我们想要检查它)

谢谢你的建议!

最佳答案

  1. 要验证对话框是否出现,您只需检查是否显示了带有对话框内文本的 View :

    onView(withText("dialogText")).check(matches(isDisplayed()));
    

    或者,基于带有 id 的文本

    onView(withId(R.id.myDialogTextId)).check(matches(allOf(withText(myDialogText), isDisplayed()));
    
  2. 要单击对话框按钮,请执行以下操作(按钮 1 - 确定,按钮 2 - 取消):

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

    更新

  3. 我认为这是可能的,因为 Espresso 有 multi window support .
  4. 不确定是否要在自定义对话框 View 之外单击,但要检查它是否正在显示,您必须创建自定义匹配器并在其中检查。

关于android - 检查 Espresso 是否显示对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21045509/

相关文章:

android - 如何在 Espresso 上按键编辑器操作

android - 我的 Android UI 测试没有 ID

android - 如何在 Espresso 测试中调用自定义 View 的方法?

java - 在不卡住主线程的情况下在 Espresso Android 中进行延迟测试

android - 连接服务器主机失败

android - 如何在 Kotlin 中将以下 Observables 合并为一个?

更新到版本 4.10 后 Android Gradle 同步失败

android - 如何在编辑文本点击时隐藏虚拟键盘

automated-tests - 如何使用espresso从textview中获取文本

android - 这个 Parcelable 对象传递有什么问题?