【问题标题】:Espresso Testing: programmatically select 'never' on smart lock save password浓缩咖啡测试:以编程方式在智能锁保存密码上选择“从不”
【发布时间】:2026-01-13 10:15:01
【问题描述】:

在 Android 上进行 espresso UI 测试并试图绕过智能锁屏。问题是我们正在 Firebase 中进行测试,并且由于它们在云中(我不相信),因此无法关闭整个设备上的智能锁。弹出窗口也不是应用程序本身的一部分,因此我无法使用 Stetho 或布局检查器获取 id。我相信这是在我们的应用之上绘制的另一个应用(或操作系统功能)。

如何在 espresso 中点击“不,谢谢”或“从不”按钮?

【问题讨论】:

  • 您应该能够在设置 > Google > Smart Lock for Passwords 下打开设备上的 Smart Lock 功能?
  • 并且不会像onView(withText("NO THANKS")).perform(click()) 这样的工作吗?或者 no thanksNo ThanksNo thanks (不确定它如何处理大写)
  • @StevenSoneff,我在 firebase 上进行测试,所以手机在云端。我不知道我是否可以通过编程方式更改手机设置。
  • @BartekLipinski 弹出屏幕在另一个应用程序中。我认为它不存在于视图层次结构中
  • 查看 UIAutomator (developer.android.com/training/testing/ui-testing/…)。它与 Espresso 配合得很好,让您能够操作您无法控制的 UI。

标签: android android-espresso google-signin googlesigninapi google-smartlockpasswords


【解决方案1】:

你可以使用 uiautomator

分级

androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'

并将其添加到您的代码

waitSeconds(10) // Waiting for smartlock window
val uiDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
val currentPackageName = uiDevice.currentPackageName
if (currentPackageName != "your.app.package") {
     uiDevice.pressBack()
}

【讨论】: