我有以下一段代码:
此部分在我的本地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"))```
答案 0 :(得分:0)
找到了罪魁祸首。 这还不够:fun defaultBrowserAppList()= mDevice.findObject((UiSelector()。text(“ Browser app”)))。出于某种原因,它与文本不匹配。
应该用UiSelector()。textContains(“ Browser app”)替换,然后才能工作(忽略大写/非大写)。 相同于:mDevice.findObject(UiSelector()。textContains(“ Firefox Preview”))