【发布时间】:2021-11-17 21:38:16
【问题描述】:
我们有 400 多个使用 espresso 编写的 UI 测试在 Android Studio 中本地运行并在持续集成系统上远程运行。
其中一些测试会检查移动应用程序是否使用 Chrome 打开了 http url。 在我们的测试套件中,我们使用以下方法验证 chrome 是否正在运行:
fun waitChrome(device: UiDevice): UiObject2? {
return device.wait(Until.findObject(By.pkg("com.android.chrome")), 2500)
}
上周,可能是 gradle 依赖项的更新导致测试失败。 在执行这些测试期间,Chrome 不再打开。为了解决这些故障,我更改了上述方法的实现:
fun waitChrome(device: UiDevice): UiObject2? {
return device.wait(Until.findObject(By.pkg("org.chromium.webview_shell")), 2500)
}
在持续集成系统上启动系统 WebView Shell 而不是 Chrome 应用程序。
我想知道在执行这些测试期间是否有办法恢复 Chrome 的使用。 也许模拟器启动时可以传递一些参数。
【问题讨论】:
-
1.您在使用 com.android.chrome 时收到的错误消息是什么? 2. 你试过在真机上运行同样的测试吗?
-
Just device.wait(Until.findObject(By.pkg("com.android.chrome")), 2500) 失败,因为视图层次结构中包含包“com.android.chrome”的对象不再被发现。为了解决这个问题,我已经改变了上面描述的 waitChrome 方法的实现,并且测试再次开始成功运行。
-
我猜在这种情况下打开 chrome 是测试请求,但并非每个设备都使用 chrome,因此只有可用于在另一个应用程序中测试打开 URL 的相关内容是 espress-intents ( developer.android.com/training/testing/espresso/intents)
-
您是否在物理设备上尝试过?我认为这是一个设备问题。
-
是的,我们在设备上尝试过,chrome 运行正常。
标签: android google-chrome user-interface android-espresso