我想编写一些UI测试,其中我的应用程序必须是Android默认应用程序设置中的默认应用程序。
应用程序中有一个首选项,它将启动“默认应用程序”屏幕,让我选择默认值,然后返回,然后将设置首选项。
另一种方法是重置所有应用程序默认设置,启动带有链接的意图,然后从应用程序选择器中选择我的应用程序作为默认设置。
有什么办法可以使用kotlin和espresso以编程方式执行此操作吗?
我已经阅读并尝试了意式浓缩咖啡,但这只会让我启动“默认应用”屏幕,而不是在其中选择所需的内容。浓缩咖啡不能与外部活动互动。
我没有要共享的任何代码示例,甚至没有什么可以工作的。
最佳答案
该应用程序具有将其设置为默认值的开关,这会触发“默认应用程序”屏幕(在库存的Android OS上,而不是自定义的),因此方法如下所示:
'''
private fun setDefaultBrowserToggle() = onView(withId(R.id.switch_widget))
private fun defaultBrowserAppList() = mDevice.findObject((UiSelector().text("Browser app")))
private fun myAppOption() = mDevice.findObject(UiSelector().text("<App Name>"))
fun selectDefaultBrowser(){
setDefaultBrowserToggle().click()
mDevice.waitNotNull(
Until.findObject(By.text("Browser app")),
TestAssetHelper.waitingTime
)
defaultBrowserAppList().click()
myAppOption().click()
mDevice.pressBack()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
mDevice.pressBack() //needs an extra back press on Android O or higher, to return to the app
}
}
'''