测试通过本地AS模拟器,但在Firebase测试实验室失败

时间:2020-02-01 19:30:47

标签: android firebase automated-tests android-testing android-uiautomator

我有以下一段代码:

  • 点击Firefox应用中的切换按钮
  • 此拨动开关可从“系统设置”中打开“默认应用”菜单
  • 我打开浏览器列表,选择我的浏览器,然后按返回以返回到应用程序。

此部分在我的本地Android Studio模拟器和真实设备上可以正常运行,但是当我在Firebase测试实验室中使用相同的虚拟设备配置运行它时:Pixel 2 API 28,它将无法检测到“浏览器应用程序”文本并失败。

有什么想法为什么它在Firebase虚拟设备上的行为会有所不同?

fun selectDefaultBrowser() {
        clickSetDefaultBrowserToggle()
        mDevice.waitNotNull(
               Until.findObject(By.text("Browser app")),
               TestAssetHelper.waitingTime
            )
         assertAndroidSettingsPackage()
         defaultBrowserAppList().waitForExists(waitingTime)
         defaultBrowserAppList().clickAndWaitForNewWindow()
         fenixDebugOption().click()
         mDevice.pressBack()
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                mDevice.pressBack()
         }
     }

    fun clickSetDefaultBrowserToggle() =
        setDefaultBrowserToggle().clickAndWaitForNewWindow()

    fun setDefaultBrowserToggle() = mDevice.findObject(
          UiSelector().resourceId("org.mozilla.fenix.debug:id/switch_widget")
    )

    fun defaultBrowserAppList() = mDevice.findObject(
       (UiSelector()
           .className("android.widget.TextView"))
           .resourceId("android:id/title")
           .text("Browser app")
    )

    fun assertAndroidSettingsPackage() = assertTrue(
        mDevice.findObject(
            (UiSelector().packageName("com.android.settings"))
        ).waitForExists(waitingTime)
    )

    fun fenixDebugOption() = mDevice.findObject(UiSelector().text("Firefox Preview"))```

1 个答案:

答案 0 :(得分:0)

找到了罪魁祸首。 这还不够:fun defaultBrowserAppList()= mDevice.findObject((UiSelector()。text(“ Browser app”)))。出于某种原因,它与文本不匹配。

应该用UiSelector()。textContains(“ Browser app”)替换,然后才能工作(忽略大写/非大写)。 相同于:mDevice.findObject(UiSelector()。textContains(“ Firefox Preview”))