【问题标题】:Android Mobile App UI Test with Espresso - Chrome stop running使用 Espresso 进行 Android 移动应用程序 UI 测试 - Chrome 停止运行
【发布时间】: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


【解决方案1】:

可能在持续集成系统上启动了 System WebView Shell 而不是 Chrome App,因为在创建模拟器时,它没有在 abi 和 package 中使用google_apis_playstore。您可以尝试使用此配置代替google_apis

【讨论】:

  • 它就像一个沙姆!
【解决方案2】:

您可以控制是否触发相关活动而不是包名称。

示例活动

"com.android.chrome/com.google.android.apps.chrome.Main"

示例代码

Espresso - How can I check if an activity is launched after performing a certain action?

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    相关资源
    最近更新 更多